使用findcontrol查找checkboxlist ID的问题

时间:2015-03-06 15:37:00

标签: c# asp.net asp.net-3.5

任何人都可以帮我解决以下问题吗?: 我为列表中的每个项目动态创建一个checkboxlist控件。我将每个复选框列表放在相关的div上。

CheckBoxList cblist = new CheckBoxList();

foreach (Category cat in Data.Instance.Listcategorys())
         {      
              if (category.TypeID == parameterid)
            {
                 ListItem item = new ListItem(category.Name, category.ID.ToString());
                 cblist.ID = "cblist" + parameterid;
                 divRowHeader.Controls.Add(cblist );
                 cblist.Items.Add(item);
             } 
        }

每个cheackboxlist包含基于“parameterid”的自己的项目。

我必须检查哪些项目已经过检查,因此我在foreach循环中找到了控件:

foreach (Control c in div.Controls)
        {
            CheckBoxList cblfound = (((CheckBoxList)c.FindControl("???")));

            foreach (ListItem item in cblfound Items)
            {
                if (item.Selected)
                {}

       }

问题出在这里。 .Net为每个Checkboxlist创建自己的ID。如何才能使用.findcontrol找到控件?即时通讯使用.net 3.5

提前致谢

1 个答案:

答案 0 :(得分:1)

也许您可以使用IEnumerable.OfType()和其他一些linq重新考虑您的方法,如下所示:

var selectedControls = div.Controls.OfType(CheckBoxList).Where(item => item.Selected);

foreach(CheckBoxList item in selectedControls)
{
    ...
}