ASP.NET C# - 如何设置UserControl中的CheckBoxList的公共属性?
问题描述:
我很难搞清楚这一点。如果我在一个usercontrol中有一个checkboxlist,我该如何循环(或者确实)在列表中检查哪些框?ASP.NET C# - 如何设置UserControl中的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();
}
}
+0
只能使用.net 3.0 = \ – somacore 2009-10-28 20:23:12
对,这就是我想做的事 - 揭露检查项目通过财产。 – somacore 2009-10-28 19:52:53
我改变了我的代码来使用属性而不是方法。 – Bob 2009-10-28 20:07:57
太棒了。谢谢! – somacore 2009-10-28 20:22:33