ASP: ListBox Получить выбранные элементы - один вкладыш? - PullRequest
10 голосов
/ 12 декабря 2011

Я пытаюсь получить выбранные элементы элемента управления asp: ListBox и поместить их в строку с разделителями-запятыми. Тогда должен быть более простой способ сделать это:

foreach (ListItem listItem in lbAppGroup.Items)
{
    if (listItem.Selected == true)
    {
        Trace.Warn("Selected Item", listItem.Value);
    }
}

Есть ли способ поместить это в одну строку? как мой псевдокод здесь:

string values = myListBox.SelectedItems;

Я использую ASP.NET и C # 3.5.

Спасибо за любую помощь !!

Ответы [ 5 ]

16 голосов
/ 12 декабря 2011

Использование LINQ:

string values = String.Join(", ", lbAppGroup.Items.Cast<ListItem>()
                                                  .Where(i => i.Selected)
                                                  .Select(i => i.Value));
4 голосов
/ 12 декабря 2011

Я не думаю, что есть что-то встроенное, но вы могли бы сделать что-то вроде этого:

  <asp:ListBox runat="server" ID="listBox" SelectionMode="Multiple">
    <asp:ListItem Selected="True" Text="text1" Value="value1"></asp:ListItem>
    <asp:ListItem Selected="false" Text="text2" Value="value2"></asp:ListItem>
    <asp:ListItem Selected="True" Text="text3" Value="value3"></asp:ListItem>
    <asp:ListItem Selected="True" Text="text4" Value="value4"></asp:ListItem>
</asp:ListBox>

    IEnumerable<string> selectedValues = from item in listBox.Items.Cast<ListItem>()
                                             where item.Selected
                                             select item.Text;

        string s = string.Join(",", selectedValues);
2 голосов
/ 26 марта 2012
var selectedQuery = listBox.Items.Cast<ListItem>().Where(item => item.Selected); 
string selectedItems =  String.Join(",", selectedQuery).TrimEnd();
1 голос
/ 12 декабря 2011

На самом деле есть что-то встроенное:

ListBox.getSelectedItems

http://msdn.microsoft.com/en-us/library/aa297606(v=vs.60).aspx

0 голосов
/ 12 марта 2019

Другой способ - использовать объект Форма запроса, который содержит все, что было отправлено обратно. например:

string values = Request.Form(lbAppGroup.UniqueID);  //returns "a,b" if they were selected

По умолчанию возвращает список выбранных элементов, разделенных запятыми. Иногда я использую этот способ, когда не хочу или не хочу связывать данные снова, но все же хочу получить выбранные значения для обработки.

...