2010-09-22 78 views

回答

4

因为它们没有在CheckBoxList中实现SelectedItem,而是在CheckBoxList继承的ListControl中。可以认为CheckBoxList需要被带回源代码,因为写入的许多方法都不是“正确的”,但这是一个主观的论点。 (这是个人咆哮的主题,我刚刚遇到太多CheckBoxList做的事情,而且很烦人,完全是这样,只是不是我的思维方式我想,而且从来没有其他人证实它是)

3

我不得不说,因为复选框列表呈现单独的HTML复选框,不像单选按钮可分组,选定的属性需要逐项评估。

它是documentation的一部分。还请注意,SelectedIndex将返回lowest index的项目。

的CheckBoxList控件提供了 可以与结合数据 动态地生成一个多 选择复选框组。它包含一个项目 收集与成员对应 列表中的单个项目。至 确定检查哪些项目, 遍历集合, 测试列表中每个 项目的Selected属性。

4

除了达斯汀的德拉森斯坦的答案。你可以滚你自己:-)

public static IEnumerable<ListItem> SelectedItems(this CheckBoxList cbl) 
{ 
    return cbl.Items.Cast<ListItem>().Where(l=>l.Selected == true); 
} 
+0

+1,爱推广方法! – 2010-09-22 16:43:53

+0

非常酷的解决方案,必须开始使用这一个。不过,必须将复选标记给@drachenstern – 2010-09-22 16:47:56

1

这也是相当容易的子类的CheckBoxList和实现这个功能你自己,然后你就可以重新使用。

public class ExtendedCheckBoxList : CheckBoxList 
{ 
    public List<string> SelectedItems 
    { 
     get 
     { 
      return (from ListItem item in Items 
        where item.Selected 
        select item.Value).ToList(); 
     } 
    } 
} 
相关问题