2013-04-11 38 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; 
相關問題