如何从列表框中获取所选项目值而不使用for循环

时间:2012-05-02 11:19:36

标签: asp.net listbox

我的aspx页面中有一个列表框如下所示

<asp:ListBox ID="ddlCategory" runat="server" SelectionMode="Multiple" Width="200"
></asp:ListBox>

我已将其与类别数据集绑定。一切正常。现在我想从服务器端的这个列表框中获取所有选定的项目。有很多方法可以实现这些目标。但我不想迭代每个项目。 becoz list item有1000个类别。

有任何方法可以实现这一目标吗?

3 个答案:

答案 0 :(得分:4)

你可以像这样实现这个

var selectedItems = from li in ddlCategory.Items.Cast<ListItem>()
                    where li.Selected == true
                    select li;

在此处查看另一种实现方法

http://frazsundal.blogspot.com/2012/05/fetch-aspnet-listbox-control-selected.html

答案 1 :(得分:2)

以下示例示例将为您提供帮助。

Dim lst As New System.Web.UI.WebControls.ListBox
lst.Items.Add(New ListItem("1", 1))
lst.Items.Add(New ListItem("2", 2))
lst.Items.Add(New ListItem("3", 3))
lst.SelectionMode = ListSelectionMode.Multiple
lst.Items(0).Selected = True
lst.Items(2).Selected = True
Dim selectedItems As List(Of ListItem) = (From li In lst.Items.Cast(Of ListItem)() Where li.Selected = True Select li).ToList

答案 2 :(得分:0)

您可以获取所选项目的所有索引:

        int [] indexes= ListBox1.GetSelectedIndices();
        for (int i = 0; i < indexes.Length; i++)
        {
            // ListBox1.Items[i]  ;
        }