Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP:ListBox获取所选项目-一行吗?_C#_Asp.net_Linq_Listbox_C# 3.0 - Fatal编程技术网

C# ASP:ListBox获取所选项目-一行吗?

C# ASP:ListBox获取所选项目-一行吗?,c#,asp.net,linq,listbox,c#-3.0,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 = m

我试图获取asp:ListBox控件的选定项,并将它们放入逗号分隔的字符串中。因此,必须有一种更简单的方法:

foreach (ListItem listItem in lbAppGroup.Items)
{
    if (listItem.Selected == true)
    {
        Trace.Warn("Selected Item", listItem.Value);
    }
}
有没有办法把这件事排成一行?就像我这里的伪代码:

string values = myListBox.SelectedItems;
我正在使用ASP.NET和C3.5

谢谢你的帮助

使用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);

实际上,这里面有一些东西:

ListBox.getSelectedItems


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

string values = Request.Form(lbAppGroup.UniqueID);  //returns "a,b" if they were selected
默认情况下,这将返回以逗号分隔的选定项列表。
有时,当我不想或不需要再次绑定数据,但仍希望获取所选值进行处理时,我会使用这种方法。

您好,这很好。我正在尝试使其正常工作,但遇到了以下问题:“System.Web.UI.WebControl.ListItemCollection”不包含“Where”的定义,并且没有扩展方法“Where”可以找到“接受类型为“System.Web.UI.WebControl.ListItemCollection”的第一个参数。是否缺少using指令或程序集引用?我的using语句中有LINQ。@user993514我忘记了对ListItem的转换,试试看。完美的LINQ再次节省了时间。非常感谢您的帮助。ListBox.getSelectedItems.发生了什么事@事实上,经过一些调查后,这是针对WinForms而不是ASP.NET的,不过这是一个好消息。这是针对Win Forms的吗?我似乎无法在ASP.NET中实现这一点。是的,我错了。我的开发电脑不在这里,所以我添加链接太快了。但是有ListBox.GetSelectedIndices。我以为是getSelectedItems…TrimEnd在这里似乎是多余的。如果要从字符串中删除空白,应在每个项的第一行中执行该操作。第一个查询不会检索字符串
string values = Request.Form(lbAppGroup.UniqueID);  //returns "a,b" if they were selected