从ASP列表框中获取所有选定的值
问题描述:
我有一个ASP ListBox,其SelectionMode设置为“Multiple”。是否有任何方法来检索所有选定的元素,而不仅仅是最后一个?从ASP列表框中获取所有选定的值
<asp:ListBox ID="lstCart" runat="server" Height="135px" Width="267px" SelectionMode="Multiple"></asp:ListBox>
使用lstCart.SelectedIndex
只是返回最后一个元素(如预期的那样)。有什么东西会给我所有选择的?
这是一个web表单。
答
您可以使用ListBox.GetSelectedIndices method并遍历结果,然后通过items集合访问每个结果。或者,您可以遍历所有项目并检查其Selected property。使用VB.NET使用此代码,我创建列表框
List<int> selecteds = listbox_cities.GetSelectedIndices().ToList();
for (int i=0;i<selecteds.Count;i++)
{
ListItem l = listbox_cities.Items[selecteds[i]];
}
答
使用GetSelectedIndices方法:
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
我希望它能帮助。
答
试试
// 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);
谢谢。我用它给你的第二个解决方案工作。 – 2009-10-18 21:47:06
没有问题!我添加了代码以显示不同的方法。如果您决定使用LINQ,则需要投射Items集合。 – 2009-10-18 21:59:50
LINQ lamba规则。谢谢您的帮助。 – 2015-12-28 13:29:57