Почему ASCx исчезает, если нажать кнопку Сохранить?

я добавил элемент управления ascx в элемент управления вкладками с кодами С#. если вы нажмете на любую вкладку. ASCX управляющая нагрузка. вкладка управления на панели обновлений. Кроме того, элемент управления ASCX включает кнопку, если вы нажмете кнопку, вы можете добавить какое-либо значение в базу данных, но ASCX исчезнет. я думаю, что он перезагружен. Как я могу это решить? я загрузил элемент управления ascx, если я нажимаю элемент управления вкладкой. у меня есть кнопка на ASCX. я нажал кнопку ASCX disapper..

 

    protected void ASPxPageControl1_ActiveTabChanged(object source, 
        DevExpress.Web.ASPxTabControl.TabControlEventArgs e)
    {

        if (ASPxPageControl1.ActiveTabPage.Name == "Ali Sp. Reqs")
                PhAliSpReqs.Controls.Add(UserControlHelper.LoadControl(this.Page, "~/EngWebUserControl/AliSpReqs.ascx"));
        else if (ASPxPageControl1.ActiveTabPage.Name == "Test")
                PhTest.Controls.Add(UserControlHelper.LoadControl(this.Page, "~/EngWebUserControl/Test.ascx"));

ASCX:

public partial class Test : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public void Button1_Click(object sender, EventArgs e)
    {
        if (txtTest.Text != String.Empty)
        {
            Label1.Text = "Hello!";
        }
        else
            Label1.Text = "Error";
    }
}

если я нажал вкладку ВСЕ ХОРОШО. Но нажмите кнопку на ascx. Элемент управления ASCx исчезнет. Как я могу это решить!!!


person ALEXALEXIYEV    schedule 27.08.2010    source источник


Ответы (2)


Если вы программно добавляете элементы управления в код, каждая операция обратной передачи должна заново создавать одни и те же элементы управления (например, во время Page_Load) для обработки события обратной передачи (в вашем случае — кнопки «Сохранить»).

person devio    schedule 27.08.2010
comment
В вашем коде LoadControl() вызывается только для ActiveTabChanged, чтобы добавить элемент управления. Но эта информация не переживает постбэк. - person devio; 27.08.2010

Динамически добавляемые элементы управления не имеют переменной ссылки на объект в классе отделенного кода. Они появляются только в коллекции элементов управления, содержащей элемент управления, т. е. в коллекции Page.Controls. Когда страница отправляется обратно на сервер в результате взаимодействия с пользователем, создается новый экземпляр класса отделенного кода, и все переменные класса устанавливаются со значениями из ViewState. см. здесь

person Arsen Mkrtchyan    schedule 27.08.2010