在我的Asp.NET网站上,我有一个允许多个选择的列表框.我希望能够提出类似的问题:
blah = myListbox.selectedItems;
Run Code Online (Sandbox Code Playgroud)
并获得在列表框中选择的项目的集合.看起来在Windows Forms世界中有一种方法,但不适用于asp.NET.有没有比这更简单的方法来迭代Items集合寻找选定的值?
这样的东西可以让你得到所选的项目:
List<ListItem> selectedItems = new List<ListItem>();
int[] selectedItemsIndexes = myListbox.GetSelectedIndices();
foreach (int selectedItem in selectedItemsIndexes)
{
selectedItems.Add(myListbox.Items[selectedItem]);
}
Run Code Online (Sandbox Code Playgroud)
作为扩展方法:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在你可以打电话:
List<ListItem> selectedItems = myListBox.GetSelectedItems();
Run Code Online (Sandbox Code Playgroud)
正如olle所说,扩展方法可能是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;
}
}
Run Code Online (Sandbox Code Playgroud)