asp.net - ListBox 中是否有选定项目的 ASP.NET 集合?

标签 asp.net listbox

在我的 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/

相关文章:

c# - 如何为 Listbox DataSource 实现一种方式绑定(bind)集合?

带有 MySQLdb 的 Python Tkinter 列表框

javascript - 导航列表问题

jquery - 获取列表框中选定值的列表

javascript - ASP WebForms 在回发时重新评估属性

ASP.NET 在文本框中显示列表框中选定的项目

javascript - 有没有办法在 ajax POST 请求中发送对象和单独的变量

asp.net - 动态创建excel文件并自动下载

c# - 单声道 tlstest.exe 错误

vba - listcount -1 是什么意思