使用 findControl 查找复选框列表 ID 时出现问题



谁能帮我解决以下问题?我正在为带有类别的列表中的每个项目动态创建一个复选框列表控件。我将每个复选框列表放在相关的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都包含他自己的基于"参数ID"的项目。

我必须检查检查哪些项目,所以我做了 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 的 IM

提前致谢

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

var selectedControls = div.Controls.OfType(CheckBoxList).Where(item => item.Selected);
foreach(CheckBoxList item in selectedControls)
{
    ...
}

最新更新