获得从ASP ListBox中所有选定值(Getting all selected values f

2019-08-20 03:45发布

我有一个具有将SelectionMode设置为“多”的ASP列表框。 有retreiving所有选定的元素,而不只是最后一个的方法吗?

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

使用lstCart.SelectedIndex只是返回的最后一个元素(如预期)。 有什么会给我所有的选择?

这是一个Web表单。

Answer 1:

您可以使用ListBox.GetSelectedIndices方法和遍历结果,然后通过访问项集合各一个。 或者,您可以通过所有的项目循环,并检查他们的Selected属性 。

// 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);


Answer 2:

使用列表框的GetSelectedIndices方法

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

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


Answer 3:

尝试使用此代码我用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

我希望它能帮助。



文章来源: Getting all selected values from an ASP ListBox