Получение всех выбранных значений из ASP ListBox
У меня есть ASP ListBox, у которого параметр SelectionMode установлен на "Multiple". Есть ли способ вернуть ВСЕ выбранные элементы, а не только последний?
<asp:ListBox ID="lstCart" runat="server" Height="135px" Width="267px" SelectionMode="Multiple"></asp:ListBox>
Использование lstCart.SelectedIndex
просто возвращает последний элемент (как и ожидалось). Есть ли что-то, что даст мне все выбранные?
Это для веб-формы.
Ответы
Ответ 1
Вы можете использовать метод ListBox.GetSelectedIndices и зацикливать результаты, затем получить доступ к каждому из них через коллекцию элементов. В качестве альтернативы вы можете просмотреть все элементы и проверить Выбранное свойство.
// 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);
Ответ 2
использовать метод GetSelectedIndices из списка
List<int> selecteds = listbox_cities.GetSelectedIndices().ToList();
for (int i=0;i<selecteds.Count;i++)
{
ListItem l = listbox_cities.Items[selecteds[i]];
}
Ответ 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
Надеюсь, это поможет.