从ASP ListBox获取所有选定的值

时间:2009-10-18 21:29:14

标签: c# asp.net listbox

我有一个ASP ListBox,其SelectionMode设置为“Multiple”。是否有任何方法可以检索所有选定的元素,而不仅仅是最后一个元素?

<asp:ListBox ID="lstCart" runat="server" Height="135px" Width="267px" SelectionMode="Multiple"></asp:ListBox>

使用lstCart.SelectedIndex只返回最后一个元素(如预期的那样)。有什么能让我全部被选中吗?

这适用于网络表单。

3 个答案:

答案 0 :(得分:52)

您可以使用ListBox.GetSelectedIndices method并循环结果,然后通过items集合访问每个结果。或者,您可以遍历所有项目并检查其Selected property

// GetSelectedIndices
foreach (int i in ListBox1.GetSelectedIndices())
{
    // ListBox1.Items[i] ...
}

// Items collection
foreach (ListItem item in ListBox1.Items)
{
    if (item.Selected)
    {
        // item ...
    }
}

// LINQ over Items collection (must cast Items)
var query = from ListItem item in ListBox1.Items where item.Selected select item;
foreach (ListItem item in query)
{
    // item ...
}

// LINQ lambda syntax
var query = ListBox1.Items.Cast<ListItem>().Where(item => item.Selected);

答案 1 :(得分:3)

使用列表框的GetSelectedIndices方法

  List<int> selecteds = listbox_cities.GetSelectedIndices().ToList();

        for (int i=0;i<selecteds.Count;i++)
        {
            ListItem l = listbox_cities.Items[selecteds[i]];
        }

答案 2 :(得分:1)

尝试使用我使用VB.NET创建的代码:

Public Shared Function getSelectedValuesFromListBox(ByVal objListBox As ListBox) As String
    Dim listOfIndices As List(Of Integer) = objListBox.GetSelectedIndices().ToList()
    Dim values As String = String.Empty

    For Each indice As Integer In listOfIndices
        values &= "," & objListBox.Items(indice).Value
    Next indice
    If Not String.IsNullOrEmpty(values) Then
        values = values.Substring(1)
    End If
    Return values
End Function

我希望它有所帮助。