例如,我有3个复选框,ID复选框1,复选框2,复选框3。我需要在代码后面循环并根据我的sql队列结果禁用它们。但是,如果我有超过10个复选框,我不能一个接一个地做,并且有很多逻辑要检查。我该怎么做?感谢。
答案 0 :(得分:0)
您可以使用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;
}
答案 1 :(得分:0)
一种常见的方法是声明一个数组并将所有控件放在那里:
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
,这意味着您循环的所有控件都必须位于一个公共父控件中。