C# 从数组中动态创建复选框,然后遍历它们以检查选定的

C# 从数组中动态创建复选框,然后遍历它们以检查选定的,c#,asp.net,checkbox,C#,Asp.net,Checkbox,我已经从一个Web服务返回的信息中创建了一个复选框列表。复选框按预期呈现,但当我尝试然后读取它们以检查它们是否已被选中时,代码无法找到它们 我创建了一个名为planList的面板,并让代码循环创建框的动态列表-然后在按下按钮时,它应该遍历复选框列表,以查看用户是否选择了任何值。除非动态创建,否则代码似乎不会选中任何复选框。有人能帮忙吗?目前,我只是试图拉出ID,如果它拿起一个复选框 代码: planList.Controls.Add(新的文字控件(“计划列表”); foreach(ws.plan

我已经从一个Web服务返回的信息中创建了一个复选框列表。复选框按预期呈现,但当我尝试然后读取它们以检查它们是否已被选中时,代码无法找到它们

我创建了一个名为
planList
的面板,并让代码循环创建框的动态列表-然后在按下按钮时,它应该遍历复选框列表,以查看用户是否选择了任何值。除非动态创建,否则代码似乎不会选中任何复选框。有人能帮忙吗?目前,我只是试图拉出ID,如果它拿起一个复选框

代码:

planList.Controls.Add(新的文字控件(“计划列表”);
foreach(ws.planS中的字符串[]ar(this.txtGetDetails.Text)){
复选框cb=新复选框();
cb.Text=ar[1].ToString();
cb.ID=ar[0];
计划表.控制.添加(cb);
planList.Controls.Add(新的LiteralControl(“应用程序ID:+ar[2]+”));
planList.Controls.Add(新的LiteralControl(“
”); } 受保护的无效上载按钮\u Click1(对象发送者,System.EventArgs e){ foreach(planList.Controls中的控件c){ 复选框chx=c作为复选框; 如果(chx!=null){ var planid=c.ID; } } }
您必须覆盖
CreateChildControls
方法并在那里添加复选框。这样,您就可以在加载ViewState之前创建控件树,其中包含选中的控件的数据。

何时添加复选框?我已经编辑了您的标题。请看“”,其中的共识是“不,他们不应该”。谢谢我在页面加载后添加了它们-已经将它们添加到页面加载中,现在可以阅读它们了。
planList.Controls.Add(new LiteralControl("<h2>Plan List </h2>"));
foreach (string[] ar in ws.planS(this.txtGetDetails.Text)) {
    CheckBox cb =  new CheckBox();
    cb.Text = ar[1].ToString();
    cb.ID = ar[0];                
    planList.Controls.Add(cb);                
    planList.Controls.Add(new LiteralControl("<b>   Application ID: " + ar[2] + "</b>"));                
    planList.Controls.Add(new LiteralControl("<br>"));
}

protected void Uploadbutton_Click1(object sender, System.EventArgs e) {
    foreach (Control c in planList.Controls) {
        CheckBox chx = c as CheckBox;
        if (chx != null) {
            var planid = c.ID;
        }
    }
}