ASP:ListBox получить выбранные элементы - один лайнер?
Я пытаюсь получить выбранные элементы управления asp: ListBox и поместить их в строку с разделителями-запятыми. Тогда должен быть более простой способ сделать это:
foreach (ListItem listItem in lbAppGroup.Items)
{
if (listItem.Selected == true)
{
Trace.Warn("Selected Item", listItem.Value);
}
}
есть ли способ сделать это в одну строку? как и мой псевдо-код здесь:
string values = myListBox.SelectedItems;
Я использую ASP.NET и C# 3.5.
Спасибо за любую помощь!!
4 ответов
использование LINQ:
string values = String.Join(", ", lbAppGroup.Items.Cast<ListItem>()
.Where(i => i.Selected)
.Select(i => i.Value));
Я не думаю, что есть что-то встроенное, но вы можете сделать что-то вроде этого:
<asp:ListBox runat="server" ID="listBox" SelectionMode="Multiple">
<asp:ListItem Selected="True" Text="text1" Value="value1"></asp:ListItem>
<asp:ListItem Selected="false" Text="text2" Value="value2"></asp:ListItem>
<asp:ListItem Selected="True" Text="text3" Value="value3"></asp:ListItem>
<asp:ListItem Selected="True" Text="text4" Value="value4"></asp:ListItem>
</asp:ListBox>
IEnumerable<string> selectedValues = from item in listBox.Items.Cast<ListItem>()
where item.Selected
select item.Text;
string s = string.Join(",", selectedValues);
var selectedQuery = listBox.Items.Cast<ListItem>().Where(item => item.Selected);
string selectedItems = String.Join(",", selectedQuery).TrimEnd();
на самом деле есть что-то построен в:
списка.getSelectedItems
http://msdn.microsoft.com/en-us/library/aa297606 (v=против 60).aspx