我正在使用从数据库中提取的一组对象的Html.Grid(通过LINQ to SQL)。这是网格代码(我已将数据更改为人为的设计)。该页面强烈类型为People。
<%=Html.Grid<People>(Model)
// Display chose solution information.
.Columns(column =>
{
column.For(person => person.Name);
column.For(person => person.Address.City);
}
)
%>
在数据库中,我会有一个People表和一个由外键链接的Address表。 (再次,这是设计 - 只是试图描述问题。)
我想允许用户对列进行一般排序。以前的开发人员在控制器中的排序中进行了硬编码,就像这样......
//
// GET: Results/Grid
public ActionResult Grid(int id, GridSortOptions sort)
{
if (sort == null)
{
sort = new GridSortOptions();
}
Solution solution = repository.GetSolution(id);
List<People> people = solution.People.ToList();
if (!string.IsNullOrEmpty(sort.Column))
{
people = solution.People.ToList().OrderBy(sort.Column, sort.Direction).ToList();
}
return PartialView("Grid", people);
}
当我排序的对象是人时(如果我点击person.Name列对其进行升序或降序排序),这非常有用。但是,当我想对地址列进行排序时,我得到一个例外,因为人们不包含城市......地址确实如此。
我的问题是......有没有办法在不知道类型是什么的情况下通常做这种排序?感谢。
答案 0 :(得分:0)
javascript表格分拣机怎么样?当然,如果您的列表足够大以至于需要分页,那么这将无效。
答案 1 :(得分:0)
我回来后发布了一个类似的问题。我在那篇文章上得到的答案可能会帮助你顺利开始:
Looking for a better way to sort my List<T>
基本上答案建议持有Func&lt;&gt;的地图。 (或类似的)并在代码块中调用适当的一个。