ASP.NET C#-如何在UserControl中为复选框列表设置公共属性?
我很难弄明白这一点。如果我在usercontrol中有一个复选框列表,我如何循环(或者真正地检查)列表中的复选框ASP.NET C#-如何在UserControl中为复选框列表设置公共属性?,c#,asp.net,user-controls,properties,checkboxlist,C#,Asp.net,User Controls,Properties,Checkboxlist,我很难弄明白这一点。如果我在usercontrol中有一个复选框列表,我如何循环(或者真正地检查)列表中的复选框 正如我在下面的评论中所说,我希望通过控件本身的属性公开选中的项 在您的页面中,您可以执行以下操作 var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1"); 但在我看来,一个更好的解决方案是通过属性或方法公开选中的项 在用户控制中 public string[] CheckedItems {
正如我在下面的评论中所说,我希望通过控件本身的属性公开选中的项 在您的页面中,您可以执行以下操作
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();
}
}
您也可以只返回属性中的
checkbox1.Items
,但这不是很好的封装 如果您使用的是.net 3.5,则可以创建一个只读属性,该属性使用LINQ仅返回选定值的ILST:
public IList<string> SelectedItems{
get {
return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList();
}
}
public IList SelectedItems{
得到{
返回checkbox1.Items.Cast.Where(i=>i.Selected);
}
}
没错,这就是我想要做的-通过属性公开选中的项。仅使用.net 3.0=\
public IList<string> SelectedItems{
get {
return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList();
}
}