复选框已更改事件未触发动态添加控件

时间:2011-09-23 14:56:55

标签: c# .net asp.net checkbox

我在页面加载事件中动态地在我的jQuery手风琴控件中创建了一个3个复选框,我还将文本框的CheckedChanged事件关联起来。但事件根本没有解雇。我不确定这里发生了什么。请帮我。感谢并感谢您的反馈。

我用来生成动态控件并关联事件的代码

protected void Page_Load(object sender, EventArgs e)
{
    dvAccordion.Controls.Clear();
    foreach (DataRow row in dataSetIP.Tables[0].Rows)
    {
        HtmlGenericControl tt= new HtmlGenericControl("H3");
        HtmlAnchor anc= new HtmlAnchor();
        HtmlGenericControl dvP= new HtmlGenericControl("DIV");
        dvP.InnerHtml = row["LD"].ToString();
        CheckBox chkTest = new CheckBox();
        if (!Page.IsPostBack) chkTest .ID = "chk" + row["SD"].ToString();
        else
        {
            string uniqueID = System.Guid.NewGuid().ToString().Substring(0, 5);
            chkTest .ID = "chk" + uniqueID + row["SD"].ToString();
        }
        chkTest.Text = row["SD"].ToString();
        chkTest.AutoPostBack = true;
        chkTest.CheckedChanged += new EventHandler(chkTest _CheckedChanged);
        chkTest.InputAttributes.Add("Value", row["ID"].ToString());

        anc.Controls.Add(chkTest);
        tt.Controls.Add(anc);
        dvAccordion.Controls.Add(tt);
        dvAccordion.Controls.Add(dvP);           
    }  
}

但CheckboxChanged事件未触发。

2 个答案:

答案 0 :(得分:1)

这是一个添加控件,ViewState和一些生命周期的问题。动态添加完全参与整个生命周期的控件是一个复杂的主题,如果没有更多的上下文,最好阅读Truly Understanding Dynamic Controls系列。

在你的情况下,我认为你是在ViewState初始化之后重新创建下一页加载的控件,因此它不需要知道绑定时需要将调用排队到绑定事件处理程序。

答案 1 :(得分:0)

尝试在Page_Init()事件中添加控件(在Page_Load()事件之前触发)。