Getting all selected values from an ASP ListBox

I have an ASP ListBox that has the SelectionMode set to “Multiple”. Is there any way of retreiving ALL selected elements and not just the last one?

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

Using lstCart.SelectedIndex just returns the last element (as expected). Is there something that will give me all selected?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You can use the ListBox.GetSelectedIndices method and loop over the results, then access each one via the items collection. Alternately, you can loop through all the items and check their 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);

Method 2

use GetSelectedIndices method of listbox

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

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

Method 3

try using this code I created using 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

I hope it helps.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x