【发布时间】:2009-10-28 19:42:47
【问题描述】:
我无法弄清楚这一点。如果我在用户控件中有一个复选框列表,我如何循环(或检查,真的)列表中选中了哪些框?
正如我在下面的评论中所说,我想通过控件本身的属性公开选中的项目。
【问题讨论】:
标签: c# asp.net user-controls properties checkboxlist
我无法弄清楚这一点。如果我在用户控件中有一个复选框列表,我如何循环(或检查,真的)列表中选中了哪些框?
正如我在下面的评论中所说,我想通过控件本身的属性公开选中的项目。
【问题讨论】:
标签: c# asp.net user-controls properties checkboxlist
从你的页面你可以做
var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1");
但在我看来,更好的解决方案是通过属性或方法公开选中的项目。
在用户控制中
public string[] CheckedItems {
get {
List<string> checkedItems = new List<string>();
foreach (ListItem item in checkbox1.Items)
checkedItems.Add(item.Value);
return checkedItems.ToArray();
}
}
然后在页面中
var checkedItems = userControl1.CheckedItems;
您也可以只在属性中返回checkbox1.Items,但这不是很好的封装。
【讨论】:
如果您使用的是 .net 3.5,则可以创建一个只读属性,该属性使用 LINQ 来返回仅包含选定值的 IList:
public IList<string> SelectedItems{
get {
return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList();
}
}
【讨论】: