Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在不知道控件名称的情况下访问动态生成的控件_Asp.net - Fatal编程技术网

Asp.net 如何在不知道控件名称的情况下访问动态生成的控件

Asp.net 如何在不知道控件名称的情况下访问动态生成的控件,asp.net,Asp.net,我的页面在运行时生成复选框列表。我通过为每个框指定string.Format(“checkbox_{0},n}”,其中n是一个运行的数字)来手动设置这些框的Id 如何从codebehind中找到复选框控件列表?我在Page.Form.controls中找不到它们。它们放在哪里 (我可以在Request.Form中看到复选框,但其中包含每个控件的客户端名称。) 谢谢 - ---更多信息---- 我的迭代循环将复选框添加到面板控件(在标记页面中创建),如下所示: CheckBox checkbox

我的页面在运行时生成复选框列表。我通过为每个框指定string.Format(“checkbox_{0},n}”,其中n是一个运行的数字)来手动设置这些框的Id

如何从codebehind中找到复选框控件列表?我在Page.Form.controls中找不到它们。它们放在哪里

(我可以在Request.Form中看到复选框,但其中包含每个控件的客户端名称。)

谢谢

-

---更多信息----

我的迭代循环将复选框添加到面板控件(在标记页面中创建),如下所示:

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,因为它包含许多用于布局的远程控件。

您可以在页面对象或父控件对象上使用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;
}
for(int i=0;i
在回发时,Panel1.Controls.Count为0。当页面第一次生成时,Panel1.Controls.Count为200,因为它包含许多用于布局的LieteralControls

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


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

谢谢。但我在Page.FindControl或Page.Form.FindControl中找不到它们。我必须设置任何页面设置才能使其正常工作。您能显示这些设置吗在页面上动态添加复选框的e代码。您在哪个父控件中添加复选框?我在我的原始帖子中添加了更多信息。谢谢。谢谢。但我真正想要的是读取复选框的状态并继续处理它们。现在我看不到它们。动态创建的复选框不是p吗返回到ViewState?ASP.NET不应该与Http POST数据结合以确定每个复选框的状态吗?发现:读取动态创建的控件的值似乎不是那么简单。@OldGeezer-主要的限制是每次回发后都需要重新创建控件树。我不认为e是完全准确的-我相信你可以在初始化阶段之后添加动态控件。据我所知,动态控件不在ViewState中,这就是为什么必须手动创建它们。然后用户提交的值必须填充到重新创建的控件上。我的问题是从何处获取这些值ViewState,或从Request.Forms?@OldGeezer用户提交的值是从Request.Forms`.填充的。ViewState保存对服务器上控件属性所做的更改。对于静态控件和动态控件也是如此。