Get all selected items from asp.net ListBox

后端 未结 3 765
梦毁少年i
梦毁少年i 2021-02-07 12:19

Anyone know of a smooth way to get all of the selected items in a listbox control by using extension methods?

And, please, spare me the argument of

相关标签:
3条回答
  • 2021-02-07 12:44
    var selected = yourListBox.Items.GetSelectedItems();
    //var selected = yourDropDownList.Items.GetSelectedItems();
    //var selected = yourCheckBoxList.Items.GetSelectedItems();
    //var selected = yourRadioButtonList.Items.GetSelectedItems();
    
    public static class Extensions
    {
        public static IEnumerable<ListItem> GetSelectedItems(
               this ListItemCollection items)
        {
            return items.OfType<ListItem>().Where(item => item.Selected);
        }
    }
    
    0 讨论(0)
  • 2021-02-07 12:46

    Hello i've created one solution for this problem in this post using VB.NET:

    Getting all selected values from an ASP ListBox

    This code below is the same as the link above:

    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.

    0 讨论(0)
  • 2021-02-07 12:50

    Extension method:

    public static List<ListItem> GetSelectedItems(this ListBox lst)
    {
        return lst.Items.OfType<ListItem>().Where(i => i.Selected).ToList();
    }
    

    You can call it on your listbox like:

    List<ListItem> selectedItems = myListBox.GetSelectedItems();
    

    You could also do the conversion using a 'Cast' on the list box items like:

    return lst.Items.Cast<ListItem>().Where(i => i.Selected).ToList();
    

    Not sure which will perform better OfType or Cast (my hunch is Cast).

    Edit based on Ruben's feedback for a generic ListControl method which would indeed make it much more useful extension method:

    public static List<ListItem> GetSelectedItems(this ListControl lst)
    {
        return lst.Items.OfType<ListItem>().Where(i => i.Selected).ToList();
    }
    
    0 讨论(0)
提交回复
热议问题