2010-09-22 79 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(); 
     } 
    } 
} 
相關問題