2011-01-25 38 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)