每当我想要获取所选项目时,我必须遍历每个项目并查看它是否已被选中。他们甚至有一个SelectedItem(最后没有“s”)成员,这对于CheckBoxList来说似乎很奇怪。这似乎是合乎逻辑的事情,有谁知道为什么他们没有添加它?
答案 0 :(得分:4)
因为它们没有在CheckBoxList中实现SelectedItem,而是在CheckConList继承的ListControl中实现。可以说CheckBoxList需要被带回源,因为它编写的许多方式都不是“正确的”,但这是一个主观论点。 (这是个人咆哮的主题,我只是碰到了太多的CheckBoxList做了一些虚假的事情而且很烦人,就是这样。只是不是我脑子里的工作方式,而且从来没有让别人证实它是他们也很讨厌。)
答案 1 :(得分:4)
除了Dustin的en drachenstern的答案。你可以自己动手: - )
public static IEnumerable<ListItem> SelectedItems(this CheckBoxList cbl)
{
return cbl.Items.Cast<ListItem>().Where(l=>l.Selected == true);
}
答案 2 :(得分:3)
我不得不说,因为复选框列表会呈现单个HTML复选框,这些复选框不像分组按钮那样可分组,所以需要逐项评估所选属性。
它是documentation的一部分。另请注意,SelectedIndex
会返回包含lowest index的项目。
CheckBoxList控件提供了一个 多选复选框组 可以用数据动态生成 捆绑。它包含一个项目 与成员对应的集合 到列表中的单个项目。至 确定检查哪些项目, 遍历集合和 测试每个的Selected属性 列表中的项目。
答案 3 :(得分:1)
将CheckBoxList子类化并自己实现此功能也很容易,然后可以重复使用。
public class ExtendedCheckBoxList : CheckBoxList
{
public List<string> SelectedItems
{
get
{
return (from ListItem item in Items
where item.Selected
select item.Value).ToList();
}
}
}