列表框得到选定的项目-一行

本文关键字:项目 一行 列表 | 更新日期: 2023-09-27 18:17:31

我试图获得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.

谢谢你的帮助!

列表框得到选定的项目-一行

Using LINQ:

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

我不认为有任何内置的东西,但你可以这样做:

  <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);
var selectedQuery = listBox.Items.Cast<ListItem>().Where(item => item.Selected); 
string selectedItems =  String.Join(",", selectedQuery).TrimEnd();

实际上是内置的:

ListBox.getSelectedItems

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

另一种方法是使用Request Form对象,它包含所有被发回的内容。如:

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

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