2012-05-21 105 views
4

我想排序列表框中的項目。但是,這樣做後,項目值將被設置爲項目文本。任何幫助,將不勝感激。使用LINQ對ListBox ListItems進行排序?

lbxCustomers.DataSource = lbxCustomers.Items.Cast<ListItem>().Reverse().ToList(); 
lbxCustomers.DataBind(); 
+0

爲什麼你不會做這樣的客戶端? – Tejs

+0

因爲我部分使用這個項目來讓自己受益。 (更好地理解和使用LINQ。)否則,是的,JQuery一路。 – Ber53rker

+0

如果值是切換位置,則此處發生其他事情。你是說如果你簡單地將數據源設置爲'lbxCustomers.Items'集合,沒有任何變換,它能正常工作嗎? – Tejs

回答

3

可能首先,您應該將該列表存儲在泛型集合中,然後對其進行排序。這樣的事情:

List<ListItem> list = new List<ListItem>(lbxCustomers.Items.Cast<ListItem>()); 
list = list.OrderBy(li => li.Text).ToList<ListItem>(); 
lbxCustomers.Items.Clear(); 
lbxCustomers.Items.AddRange(list.ToArray<ListItem>()); 
+0

這很好。只需要使用.OrderByDescending代替。謝謝! – Ber53rker

0

嘗試設置DataSource後重置列表框的DisplayMemberValueMember性能。很多時候,如果一個控件已經綁定,並且您再次設置了DataSource,那麼它會丟棄DisplayMember/ValueMember屬性。

0

嘗試單獨分類清單。 在下一步中指定文本值和數據值。 數據綁定控件。