如何检查我在C#中动态创建的复选框?

时间:2014-11-14 07:02:56

标签: c# asp.net checkbox

这是我的代码。问题是我可以在checbox1_checkedChanged()中获得第一组复选框,但不能获得第二组复选框。我做错了什么?

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
     CheckBox checkthatBox= (CheckBox)sender;
        if (checkthatBox.Checked)
        {
            for(int i=0; i<4; i++)
            {
                CheckBox ch = new CheckBox();
                ch.ID = "ch" + i;
                ch.Text = "site "+i;
                ch.CssClass = "listItemWidth";
                ch.AutoPostBack= true;
                ch.ViewStateMode = System.Web.UI.ViewStateMode.Enabled;
                ch.CheckedChanged += ch_CheckedChanged;
                sitesPanel.Controls.Add(ch);
            }
        }
    }

    void ch_CheckedChanged(object sender, EventArgs e)
    {
        Response.Write("YO");
        CheckBox checkthatBox = (CheckBox)sender;
        if (checkthatBox.Checked)
        {
            for (int i = 0; i < 4; i++)
            {
                CheckBox ch = new CheckBox();
                ch.ID = "dl" + i;
                ch.Text = "Document Library " + i;
                ch.CssClass = "listItemWidth";
                ch.CheckedChanged += ch_CheckedChanged;
                docLibPanel.Controls.Add(ch);
            }
        }
        throw new NotImplementedException();
    }

3 个答案:

答案 0 :(得分:0)

似乎第二组复选框在页面生命周期的后期重新创建。

答案 1 :(得分:0)

如果您希望在Page_Init之后访问它们或处理来自它们的事件,则应每次在Postback创建动态控件。

请参阅以下链接了解详情: http://msdn.microsoft.com/en-us/library/hbdfdyh7%28v=vs.100%29.aspx

Here你可以看到同样的问题。

答案 2 :(得分:0)

尝试设置

EnableViewState=false

动态创建的控件