2013-04-11 59 views
5

我有一个列表框与选择模式的倍数。在后面的代码中,我想设置一些选定的值。这些值存在于ListItems [],名为'Names'如何在ListBox中设置多个项目?

HTML代码:

<asp:ListBox ID="lbto" class="chosen" runat="server" Width="450px" 
Height="20px" SelectionMode="Multiple"> 
    <asp:ListItem>Mandy</asp:ListItem> 
    <asp:ListItem>Amit</asp:ListItem> 
    <asp:ListItem>sundar</asp:ListItem> 
    <asp:ListItem>ragu</asp:ListItem> 
    <asp:ListItem>raju</asp:ListItem> 
</asp:ListBox> 

列表项[]名称包含'肉酱''拉朱'。现在,当页面加载时,列表框应包含'ragu''raju'作为选定值。

回答

13

怎么样设置Selected-属性ListItem

var names = new List<string>(new string[] { "ragu", "raju" }); 

foreach (var item in lbto.Items) 
{ 
    if (names.Contains(item.Text)) 
     item.Selected = true; 
} 
+0

你的答案是单列表项正确.. – ragu 2013-04-11 08:30:43

+0

可以设置多个项目以上述方法“选择”。更新了答案。 – Carsten 2013-04-11 08:32:17

+0

如果'lbto'包含100个项目意味着,它将检查整个100个项目。它需要更多时间吗? – ragu 2013-04-11 08:49:27

-1

使用LINQ一号线

lbto.Items.Cast<String>().ForEach(i => i.Selected = names.Contains(i.Text)); 

OR

lbto.Items.OfType<string>().ForEach(i => i.Selected = names.Contains(i.Text)); 
+1

我收到一个错误,说ListItemCollection没有'ForEach'的定义,也没有扩展方法'ForEach' – 2014-01-26 10:35:09

+0

上面的注释是正确的;也许尝试lbto.Items.OfType ()... – 2015-01-29 16:08:05

+1

该解决方案无法正常工作。 \t \t 我得到一个错误,说ListItemCollection不具备“的ForEach”的定义,并没有扩展方法“的ForEach” – 2015-12-28 14:45:13

1

您可以使用FindByValue方法

foreach (string item in stringList) 
    lbxList.Items.FindByValue(item).Selected = true; 
相关问题