multiselect - listbox asp net c# example
Obteniendo todos los valores seleccionados de un ListBox ASP (3)
Tengo un ListBox ASP que tiene el SelectionMode establecido en "Múltiples". ¿Hay alguna forma de recuperar TODOS los elementos seleccionados y no solo el último?
<asp:ListBox ID="lstCart" runat="server" Height="135px" Width="267px" SelectionMode="Multiple"></asp:ListBox>
El uso de lstCart.SelectedIndex
solo devuelve el último elemento (como se esperaba). ¿Hay algo que me dará todo seleccionado?
Esto es para un formulario web.
Puede usar el método ListBox.GetSelectedIndices y recorrer los resultados, luego acceder a cada uno a través de la colección de elementos. Alternativamente, puede recorrer todos los elementos y verificar su propiedad seleccionada .
// 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);
Utilice el método GetSelectedIndices del cuadro de lista
List<int> selecteds = listbox_cities.GetSelectedIndices().ToList();
for (int i=0;i<selecteds.Count;i++)
{
ListItem l = listbox_cities.Items[selecteds[i]];
}
intente usar este código que creé usando 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
Espero que ayude.