ASP:ListBox获取所选项目 - 一个班轮?

时间:2011-12-12 18:24:32

标签: c# asp.net linq listbox c#-3.0

我正在尝试获取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 个答案:

答案 0 :(得分:16)

使用LINQ:

string values = String.Join(", ", lbAppGroup.Items.Cast<ListItem>()
                                                  .Where(i => i.Selected)
                                                  .Select(i => i.Value));

答案 1 :(得分:4)

我认为没有任何内置但你可以做这样的事情:

  <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 :(得分:2)

var selectedQuery = listBox.Items.Cast<ListItem>().Where(item => item.Selected); 
string selectedItems =  String.Join(",", selectedQuery).TrimEnd();

答案 3 :(得分:1)

实际上有一些内置的东西:

ListBox.getSelectedItems

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

答案 4 :(得分:0)

另一种方法是使用“请求表单”对象,该对象包含回发的所有内容。例如:

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

默认情况下,这将返回以逗号分隔的所选项目列表。 当我不想或不需要再次绑定数据但仍想获取选定的值进行处理时,有时会使用这种方式。