我的页面在运行时生成一个复选框列表。我通过为每个string.Format(“checkbox_ {0},n}”分配每个这样的盒子的Id,其中n是一个运行数字。
如何从代码隐藏中找出复选框控件列表?我在Page.Form.Controls中找不到它们。它们放在哪里?
(我可以在Request.Form中查看已选中的复选框,但其中包含每个控件的客户端名称。)
感谢。
-
---更多信息----
我的迭代循环将CheckBoxes添加到Panel控件(在标记页面中创建),如下所示:
CheckBox checkbox = new CheckBox();
checkbox.Text = "Add to list";
checkbox.ID = string.Format("checkbox_{0}", n.ToString("0"));
Panel1.Controls.Add(checkbox);
复选框很好地显示在页面上。我可以打勾。当我提交Http POST流包含所有那些勾选的。
在回发后,Panel1.Controls.Count为0.当首次生成页面时,Panel1.Controls.Count为200,因为它包含大量LieteralControls用于布局。
答案 0 :(得分:0)
您可以在页面对象或父控件对象上使用findcontrol方法来查找该复选框对象。像:
CheckBox chx=(CheckBox)Page.FindControl("Checkbox1");
if(chx!=null)
chx.Checked = false;
你可以将这个insode放在循环中,如:
for(int i=0;i<n;i++)
{
CheckBox chx=(CheckBox)Page.FindControl("Checkbox"+n);
if(chx!=null)
chx.Checked = false;
}
答案 1 :(得分:0)
在回发后,Panel1.Controls.Count为0.当首次生成页面时,Panel1.Controls.Count为200,因为它包含大量LieteralControls用于布局。
如果以这种方式动态添加控件,则需要在每次回发时再次添加它们(相同的ID,相同的顺序)。
这意味着您需要保留所需的任何信息才能再次添加它们。例如,您可以在ViewState中存储复选框的数量,然后在每个帖子上重新生成该数量的复选框。