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

时间:2014-02-10 18:26:36

标签: c# asp.net checkbox

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

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

代码:

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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您必须覆盖CreateChildControls方法并在其中添加复选框。这样,您将在加载ViewState之前创建控件树,该ViewState包含已检查其中一个的数据。