动态加载控件的Viewstate问题

时间:2011-02-16 05:34:19

标签: c# asp.net custom-controls postback viewstate

我遇到动态加载控件事件的问题。

以下是我加载控件的方法:

protected void Page_Load(object sender, EventArgs e)
{
    LoadSubPageEditTemplate();
}

protected void LoadSubPageEditTemplate()
{
        pnlPageTemplate.Controls.Clear();
        BaseOfferAdmin adminControl = (BaseOfferAdmin)this.LoadControl("~/Controls/SingleOfferAdmin.ascx");                        
        if (adminControl != null)
        {
            adminControl.ID = "Control_ID"
            pnlPageTemplate.Controls.Add(adminControl);
        }
    }
}

LoadSubPageEditTemplate()也是从页面上的按钮事件触发的,因为我必须在按钮事件执行后更新它。

控件加载完美,我已经使用基本按钮测试了它,并且回发按预期激发。但是,我使用CheckBoxes得到了奇怪的结果。

<asp:CheckBox runat="server" ID="cbOptionalAction" Text="CheckBox" AutoPostBack="true" OnCheckedChanged="cbOptionalAction_CheckChanged" />

CheckedChanged事件仅在选中复选框时触发,我猜这意味着我的控件视图状态存在一些问题。如果我在页面上有多个复选框,并且有一个创建回发,则会对每个选中的复选框触发checkchanged事件。

感谢任何人抽出时间帮助我!

Ignus

1 个答案:

答案 0 :(得分:-2)

请仅在页面未回发时加载控件。

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
        {        
             LoadSubPageEditTemplate();
        }
}