使用 findcontrol 查找复选框列表 ID 的问题

problems with finding checkboxlist ID with findcontrol

谁能帮我解决以下问题?: 我为我的列表中的每个项目动态创建一个复选框列表控件。我将每个复选框列表放在相关的 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 为每个复选框列表创建自己的 ID。我如何才能使用 .findcontrol 找到控件?我正在使用 .net 3.5

提前致谢

也许您可以使用 IEnumerable.OfType() 和一些额外的 linq 重新考虑您的方法,例如:

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

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