Существует ли коллекция ASP.NET для выбранных элементов в ListBox? - PullRequest
4 голосов
/ 26 августа 2009

На моем веб-сайте Asp.NET у меня есть список, который позволяет несколько вариантов выбора. Я хотел бы иметь возможность спросить что-то вроде:

blah = myListbox.selectedItems;

и получить коллекцию предметов, которые были выбраны в списке. Похоже, что есть способ для этого в мире Windows Forms, но не для asp.NET. Есть ли более простой способ сделать это, чем просто перебирать коллекцию Items в поисках выбранных значений?

Ответы [ 4 ]

9 голосов
/ 26 августа 2009

Что-то вроде этого должно получить выбранные вами предметы:

    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();

Как и предполагал Олле, метод Extension может быть 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;
    }
}
1 голос
/ 26 августа 2009

Нет такого свойства, но простой запрос linq поможет вам быстро и легко получить результаты.

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

С помощью метода расширения вы можете сделать его еще проще, если вам нужно делать такие вещи.

1 голос
/ 26 августа 2009

Не похоже, что вы можете получить предметы напрямую, но GetSelectedIndices может помочь.

0 голосов
/ 26 августа 2009

В последний раз я проверял, нет, но это может быть полезно

http://tlaughlin.pandorasystems.com/blogs/tlaughlin/archive/2007/08/03/asp-net-listbox-missing-selecteditems-property.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...