我试图在我的网络表单上找到一个复选框,但我无法找到?它总是设置为NULL?我尝试了不同的方法(我通过FOR循环设置,我也使用了Masterpage):
CheckBox cb = (CheckBox)this.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());
CheckBox cb = (CheckBox)Page.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());
CheckBox cb = (CheckBox)Parent.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());
......以及......
CheckBox cb = (CheckBox)this.FindControl("sa" + i.ToString());
CheckBox cb = (CheckBox)Page.FindControl("sa" + i.ToString());
CheckBox cb = (CheckBox)Parent.FindControl("sa" + i.ToString());
有什么想法吗?
答案 0 :(得分:1)
Findcontrol使用id,而不是客户端生成的id(就像你的第一个代码块一样)。
在父对象上使用Findcontrol(如果我正确的话,并不总是必要的)。如果复选框位于页面主体上,请使用Page.FindControl或this.FindControl。例如,当它在列表视图中时,请在适当的事件中使用它。
答案 1 :(得分:1)
您可以尝试以下代码:
foreach ( Control c in Panel1.Controls )
{
CheckBox cb = c as CheckBox;
if(cb!=null)
{
}
}
这里Panel1包含所有复选框..谢谢。
答案 2 :(得分:1)
我将复选框放在面板中,并且能够使用Panel1.FindControl按照@linuser访问它们。
感觉像是一个quickfix,但它确实有用。