2011-09-19 35 views
0

在C#中,我想为我的页面上的所有10个Checklistbox分配一个值(例如1)。什么是语法,以便我可以使用变量?即checklistbox(i).selectedIndex = 1;使用变量引用C#中的Web服务器控件#

for (int i = 1; i < 11; i++) 
{ 
    checklistbox1.selectedIndex = 1; 
    checklistbox2.selectedIndex = 1; 
    checklistbox3.selectedIndex = 1; 
    ... 
    checklistbox10.selectedIndex = 1; 
} 
+3

你应该命名你的控件。 – SLaks

回答

0

您应该创建一个List<CheckBoxList>

var cbs = new List<CheckBoxList> { thingy, otherThingy, ... }; 

foreach (var cb in cbs) 
    cb.SelectedIndex = 0; 
2

我猜你应该使用 “的FindControl” 方法序要做到这一点,如下图所示。

for (int i = 1; i <= 10; i++) 
{ 
     (Page.FindControl("checklistbox" + i) as CheckBox).SelectedIndex = 1; 
} 

“checklistbox”被假定为以所有复选框为前缀的“ID”。

希望这有助于!

+0

我试过这个,但不幸的是它不认识SelecteIndex ......'System.Web.UI.WebControls.CheckBox'不包含'SelectedIndex'的定义,也没有扩展方法'SelectedIndex'接受可以找到'System.Web.UI.WebControls.CheckBox'类型的第一个参数 – jeetz

+0

如果您使用复选框,则只能设置它的“Checked”属性。如果您使用的是复选框列表,则可以设置“SelectedIndex”,但仅限列表中的项目,而不是全部项目。请检查您的要求。 – Praveen

+0

我使用了许多CheckListBox,每个CheckListBox有3个“检查”。用户一次只能选择1个值,因为我的浏览器上运行了javascript(互斥函数)。感谢你的帮助! – jeetz

1

你也可以遍历所有的页面上的控件,并挑选出你需要描述in this blog post by Kris Steele的那些:

foreach (Control masterControl in Page.Controls) 
{ 
    if (masterControl is MasterPage) 
    { 
     foreach (Control formControl in masterControl.Controls) 
     { 
      if (formControl is System.Web.UI.HtmlControls.HtmlForm) 
      { 
       foreach (Control contentControl in formControl.Controls) 
       { 
        if (contentControl is ContentPlaceHolder) 
        { 
         foreach (Control childControl in contentControl.Controls) 
         { 
          if(childControl is CheckBoxList) 
          { 
           ((CheckBoxList)childControl).SelectedIndex = 1; 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

这可能不是一个好主意,如果你在页面上有很多的控制。

+0

这可能会让人不安,因为我的页面上有很多控件。该页面本质上是一个大清单。 – jeetz

相关问题