C# 当用户单击表格标题时,如何对列表进行排序?
我正在编写一个asp.NETMVC应用程序,我得到了一个服务调用列表,并显示在一个表中。当用户单击表格标题时,我想告诉我的控制器按该列对列表进行排序C# 当用户单击表格标题时,如何对列表进行排序?,c#,asp.net,asp.net-mvc,sorting,C#,Asp.net,Asp.net Mvc,Sorting,我正在编写一个asp.NETMVC应用程序,我得到了一个服务调用列表,并显示在一个表中。当用户单击表格标题时,我想告诉我的控制器按该列对列表进行排序 public ActionResult Index(int? page, string sortBy, string sortDirection) { int pageIndex = page == null ? 0 : (int)page - 1; IServiceCallService scServic
public ActionResult Index(int? page, string sortBy, string sortDirection)
{
int pageIndex = page == null ? 0 : (int)page - 1;
IServiceCallService scService = new ServiceCallService();
IPagedList<ServiceCall> serviceCalls = scService.GetOpenServiceCalls("").ToPagedList(pageIndex, 2);
return View("List", serviceCalls);
}
如何合并sortBy和sortDirection。我想我可以做一些类似的事情:
IPagedList<ServiceCall> serviceCalls = sc.Service.GetOpenServiceCalls("").OrderBy(sortBy).ToPagedList(pageIndex, 2);
但这不起作用,因为我假设OrderBy需要一个类似p=>p.CreateDate的lambda,但不确定如何实现
我知道我可以这样做的方法,但它们很难看,我相信C有一些简单的东西,我只是错过了
谢谢。对常规列表进行排序时,您可以提供与列表重载进行排序比较的方法。排序: 是来自MSDN的示例。比较是一个委托,它提供排序时比较对象的方法
我可能错了,但我相信如果您的列表仅包含相同类型的项,并且该类型实现了IComparable,则可能不需要委托。在对常规列表进行排序时,您可以提供与列表重载进行排序比较的方法。排序: 是来自MSDN的示例。比较是一个委托,它提供排序时比较对象的方法
我可能错了,但我相信,如果您的列表仅包含相同类型的项,并且该类型实现了IComparable,则可能不需要委托。不要忘记方便的dandy DataBinder:
var serviceCalls = sc.Service.GetOpenServiceCalls("").OrderBy(call => DataBinder.Eval(call, sortBy));
return serviceCalls.ToPagedList(pageIndex, 2);
Msdn文档中的DataBinder.Eval
使用反射来解析和计算
数据绑定表达式又是一个
对象在运行时
不要忘记方便的dandy DataBinder:
var serviceCalls = sc.Service.GetOpenServiceCalls("").OrderBy(call => DataBinder.Eval(call, sortBy));
return serviceCalls.ToPagedList(pageIndex, 2);
Msdn文档中的DataBinder.Eval
使用反射来解析和计算
数据绑定表达式又是一个
对象在运行时
您还可以使用杠杆jQuery,并使用类似的东西,如果您只是想对列表进行排序的话。它还可以是实时的,并且完全是ajax-y。您还可以使用杠杆jQuery,并使用类似的东西,如果您只是想对列表排序的话。它也将是实时的,并且完全是ajax-y