任何人都可以帮我解决以下问题吗?: 我为列表中的每个项目动态创建一个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
提前致谢
答案 0 :(得分:1)
也许您可以使用IEnumerable.OfType()和其他一些linq重新考虑您的方法,如下所示:
var selectedControls = div.Controls.OfType(CheckBoxList).Where(item => item.Selected);
foreach(CheckBoxList item in selectedControls)
{
...
}