在c#中使用变量来引用web服务器控件

本文关键字:引用 web 服务器控件 变量 | 更新日期: 2023-09-27 18:09:08

在c#中,我想给我的页面上的所有10个checklistbox分配一个值(例如1)。我可以使用变量的语法是什么?即checklistbox(i).selectedIndex = 1;

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

在c#中使用变量来引用web服务器控件

我猜你应该使用"FindControl"方法来做到这一点,如下所示。

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

假定"checklistbox"为"ID",为所有复选框加前缀。

希望这有帮助!!

你可以遍历页面上的所有控件,挑选出你需要的,正如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;
                            }
                        }
                    }
                }
            }
        }
    }
}

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

您应该创建List<CheckBoxList>:

var cbs = new List<CheckBoxList> { thingy, otherThingy, ... };
foreach (var cb in cbs)
     cb.SelectedIndex = 0;