繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM