每当我想获得选定的项目时,我必须遍历每个项目并查看它是否被选中。他们甚至有一个 SelectedItem(末尾没有“s”)成员,这对于 CheckBoxList 来说似乎很奇怪。这似乎是一个合乎逻辑的事情,有谁知道他们为什么没有添加它?
问问题
450 次
4 回答
4
除了达斯汀的 en drachenstern 的答案。你可以自己滚动:-)
public static IEnumerable<ListItem> SelectedItems(this CheckBoxList cbl)
{
return cbl.Items.Cast<ListItem>().Where(l=>l.Selected == true);
}
于 2010-09-22T16:42:10.610 回答
4
因为他们不是在 CheckBoxList 中实现 SelectedItem,而是在 CheckBoxList 继承自的 ListControl 中实现。可以说 CheckBoxList 需要回到源代码,因为它的许多编写方式并不“正确”,但这是一个主观论点。(这是个人咆哮的主题,我刚刚遇到太多 CheckBoxList 做一些迟钝的事情,这很烦人,就是这样。只是不是我想的那样,而且从来没有其他人证实它是也烦他们。)
于 2010-09-22T16:36:01.600 回答
1
将 CheckBoxList 子类化并自己实现此功能也相当容易,然后您可以重复使用这些功能。
public class ExtendedCheckBoxList : CheckBoxList
{
public List<string> SelectedItems
{
get
{
return (from ListItem item in Items
where item.Selected
select item.Value).ToList();
}
}
}
于 2010-09-22T16:43:50.307 回答