2011-01-25 41 views
11

similar example按字母順序排序中的SelectList在MVC

問題是我的選擇列表的可能有數據(以及它的格式是一樣的東西[福特IV 200 XY-X]),在這其中我要退休(僅顯示記錄具有在第三列中也是如此,這也是我需要弄清楚該怎麼做的),大問題是,如果用戶添加了另一個福特,現在它將顯示在下拉菜單底部的所有方式非常混亂,甚至可能被忽略,所以有什麼想法?

p.s.因爲我可以在這個項目中使用jquery,所以在這個標籤中添加了jquery是可能的解決方案。

編輯 - 對於第3欄位值過濾器,這裏的solution

回答

10

感謝達林我能想出的略微修改的方案他的這反而導致我解決這個在虛擬機中,像這樣

List<Reason> reasonList = _db.Reasons.OrderBy(m=>m.Description).ToList(); 
     ReasonList = new SelectList(reasonList, "Id", "Description"); 
17

你可以使用OrderBy擴展方法:

<%: Html.DropDownListFor(
    x => x.ModelId, 
    new SelectList(Model.VehicleModels.OrderBy(x => x.Name), "Id", "Name"), 
    "-- Select a model --" 
) %> 
+0

輕微的問題,我認爲你使用LinqToSql在哪裏,因爲我使用edmx作爲這樣的x.ModelId對我來說是x。(我也存儲的表名稱)。值),並且這樣做或混合它仍然有一個問題(x => x.Name),因爲它只有x。(Equals/GetHashCode/GetType/Selected/Text/ToString/Value)並且由於表I測試它只有2列(Id和說明)我假設它是用來匹配在這種情況下要排序的列名稱說明,以防萬一我嘗試x.Text,x.Value和x.Selected和。 .. – Myzifer

+0

全部導致「DataBinding:'System.Web.Mvc.SelectListItem'不包含名稱爲'Id'的屬性。」那個錯誤。 – Myzifer

+0

找到了另一種方法來做到這一點,它是在我的viewmodel,我做了選擇列表(公共選擇列表[指定隨機名,例如ModelList] {獲取;設置;}列表<[插入表名]> [插入隨機名列表例如modList] = db。[複數插入的表名在前面使用,所以如果它是Model之前的模型現在] .OrderBy(x => x.Description).ToList(); ModelList = new SelectList(modList ,「Id」「Description」);這是否會改變你如何回答我不知道的問題,但是如果你修復了以前的評論錯誤或添加詳細信息... – Myzifer

0
List<string> TestList = new List<string>(); 

foreach(//SomeCode) 
{ 

TestList.Add(//Item); 

} 

TestList = TestList.OrderBy(n => n.TestItem).ToList(); 
0

如果您的下拉列表有編輯器模板,則會根據文本進行排序。 selectList.OrderBy(x => x.Text)