0

我的页面在运行时生成一个复选框列表。我通过为每个框分配 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。

4

2 回答 2

0

回发时,Panel1.Controls.Count 为 0。第一次生成页面时,Panel1.Controls.Count 为 200,因为它包含许多用于布局的 LieteralControls。

如果以这种方式动态添加控件,则需要在每次回发时再次添加它们(相同的 id,相同的顺序)。

这意味着您需要保留再次添加它们所需的任何信息。例如,您可以将复选框的数量存储在 ViewState 中,然后在每次回发时重新生成该数量的复选框。

于 2013-05-22T16:16:30.047 回答
0

您可以在页面对象或父控件对象上使用 findcontrol 方法来查找该复选框对象。喜欢:

CheckBox chx=(CheckBox)Page.FindControl("Checkbox1");
if(chx!=null)
chx.Checked = false;

您也可以将其放入循环中,例如:

for(int i=0;i<n;i++)
{
CheckBox chx=(CheckBox)Page.FindControl("Checkbox"+n);
if(chx!=null)
chx.Checked = false;
}
于 2013-05-22T05:46:02.490 回答