如何在asp.net的控件名称中使用数字循环控件

时间:2016-04-29 10:27:01

标签: asp.net

例如,我有3个复选框,ID复选框1,复选框2,复选框3。我需要在代码后面循环并根据我的sql队列结果禁用它们。但是,如果我有超过10个复选框,我不能一个接一个地做,并且有很多逻辑要检查。我该怎么做?感谢。

2 个答案:

答案 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,这意味着您循环的所有控件都必须位于一个公共父控件中。