【问题标题】:Why ASCx disappear if clicking button to Save?如果单击按钮保存,为什么 ASCx 会消失?
【发布时间】:2010-08-27 08:09:16
【问题描述】:

我使用 C# 代码在选项卡控件中添加了 ascx 控件。如果您单击任何选项卡。 ASCX 控制负载。更新窗格中的选项卡控件。 Alos 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 控制消失。怎么解决!!!

【问题讨论】:

    标签: c# .net visual-studio ascx


    【解决方案1】:

    如果您在代码中以编程方式添加控件,则每个回发操作都需要重新创建相同的控件(例如,在 Page_Load 期间)以处理回发事件(在您的情况下为“保存”按钮)

    【讨论】:

    • 在您的代码中,LoadControl() 仅在 ActiveTabChanged 上调用以添加控件。但此信息无法在回发后保留。
    【解决方案2】:

    动态添加的控件在代码隐藏类中没有对象引用变量。它们仅出现在包含控件的控件集合中,即 Page.Controls 集合。当由于用户交互而将页面回发到服务器时,将实例化代码隐藏类的新实例,并且使用 ViewState 中的值设置该类的所有变量。见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 2019-09-22
      • 2011-06-13
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多