2009-08-26 10 views
4

私のAsp.NET Webサイトには、複数の選択ができるリストボックスがあります。ListBoxに選択項目のASP.NETコレクションがありますか?

blah = myListbox.selectedItems; 

のようなものを聞くことができます。リストボックスで選択されたアイテムのコレクションを指定できます。これは、Windowsフォームの世界ではこの方法があるようですが、asp.NETではそうではありません。選択した値を探しているItemsコレクションを繰り返し処理するよりも簡単な方法がありますか?

答えて

9

かもしれ何かがあなたの選択した項目を取得する必要があります

public static class ListBoxExtensions 
{ 

    public static List<ListItem> GetSelectedItems(this ListBox listbox) 
    { 
     List<ListItem> selectedItems = new List<ListItem>(); 
     int[] selectedItemsIndexes = listbox.GetSelectedIndices(); 
     foreach (int selectedItem in selectedItemsIndexes) 
     { 
      selectedItems.Add(listbox.Items[selectedItem]); 
     } 
     return selectedItems; 
    } 
} 

今すぐ電話することができます:

List<ListItem> selectedItems = myListBox.GetSelectedItems(); 

オルレは、拡張メソッドはLINQの-ified可能性が示唆され及び木はにさらにダウン縮小したよう:そのようなプロパティがありません

public static class ListBoxExtensions 
{ 

    public static IEnumerable<ListItem> GetSelectedItems(this ListBox listbox) 
    { 
     var selectedItems = from ListItem i in myListbox.Items where i.Selected select i 
     return selectedItems; 
    } 
} 
+0

そして、私はそれをコレクション上で繰り返しますが、それほどいい方法はないと言えるでしょう。 – Rob

1

あなたはアイテムを直接手に入れることはできませんが、GetSelectedIndicesが役立つかもしれません。拡張メソッドとして

List<ListItem> selectedItems = new List<ListItem>(); 
    int[] selectedItemsIndexes = myListbox.GetSelectedIndices(); 
    foreach (int selectedItem in selectedItemsIndexes) 
    { 
     selectedItems.Add(myListbox.Items[selectedItem]); 
    } 

:このような

1

が、簡単なLINQクエリは、結果が速くあなたを取得簡単です。

var selectedItems = from ListItem i in myListbox.Items where i.Selected select i; 

拡張メソッドを使用すると、このようなことを行う必要がある場合はさらに簡単にすることができます。

+0

少なくとも私のPC上では(ちょっと変わったかもしれません - それはCTPがインストールされていて、 )、iの型を指定する必要がありました。 var selectedItems = from ListItem i in myListbox.Items where i.Selected select i; – Rob

+0

ああ、あなたは絶対に正しいです。それを指摘してくれてありがとう。私は、コンパイルされたコードをコミットするだけでなく、それに答えるべきではないと思います。正しい答えが更新されました。 – olle

関連する問題