[英]How to loop through controls with number in the control name in asp.net
例如,我有3个ID为checkbox1,checkbox2,checkbox3的复选框。 我需要在后面的代码中循环并根据我的sql队列结果禁用它们。 但是,如果我有10个以上的复选框,我将无法一一完成,并且有很多逻辑需要检查。 我该怎么做? 谢谢。
您可以使用Control.FindControl在容器中获取带有其ID的控件。 如果表单上有复选框,则可以使用this.FindControl
。
int numberofControls=4;
for(int i=1; i < numberofControls; i++)
((CheckBox)parentControlId.FindControl("checkbox" + i)).Enabled = false;
如果有可能您没有想要的控件,那么最好检查一下是否有控件。
for(int i=1; i < numberofControls; i++)
{
CheckBox checkbox = ParentControl.FindControl("checkbox" + i) as Checkbox;
if(checkbox != null)
checkbox.Enabled = false;
}
一种常见的方法是声明一个数组并将所有控件放在其中:
Checkbox[] checkboxes = new Checkbox[]{CheckboxOne, CheckboxTwo, AnotherCheckbox};
您可以轻松地遍历。 请注意,这允许控件使用任意名称。
仅当控件ID实际遵循模式ControlNameX时才适用的另一种方法是使用FindControl
。
for (int i=1; i<=3; i++)
{
Checkbox c = ParentControl.FindControl("Checkbox" + i) as Checkbox;
}
还要注意,必须在直接父级上调用FindControl
,这意味着要遍历的所有控件都必须在一个公共父级控件内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.