在我的 Asp.NET 网站上,我有一个允许多选的列表框。我希望能够提出以下问题:
blah = myListbox.selectedItems;
并获得在列表框中选择的项目的集合。看起来在 Windows 窗体世界中有一种方法,但不适用于 asp.NET。是否有比仅迭代 Items 集合以查找选定值更简单的方法?
最佳答案
这样的事情应该让你选择的项目:
List<ListItem> selectedItems = new List<ListItem>();
int[] selectedItemsIndexes = myListbox.GetSelectedIndices();
foreach (int selectedItem in selectedItemsIndexes)
{
selectedItems.Add(myListbox.Items[selectedItem]);
}
作为扩展方法:
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();
正如 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;
}
}
关于asp.net - ListBox 中是否有选定项目的 ASP.NET 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1336694/