Get all selected items from asp.net ListBox

别说谁变了你拦得住时间么 提交于 2019-12-03 17:13:05

问题


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 it's irrelevant as to how one gets such a list because in the end everything uses a loop to iterate over the items and find the selected ones anyway.


回答1:


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



回答2:


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();
}



回答3:


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.



来源:https://stackoverflow.com/questions/1829935/get-all-selected-items-from-asp-net-listbox

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!