datatable后端分页+排序处理 MVC

datatable有专门用来分页的插件,可以去官网查看。

在js里打开可以分页的开关:

table = $('#tracking').DataTable({
        destroy: true,
        serverSide: true, // use local process instead of server
        bFilter: true, // show top right search input box.
        bPaginate: true,//是否开启分页
        info: true,
        scrollX: true,
        scrollY: '300px',
        aLengthMenu: [10, 50, 200, 500,800,1000],
        iDisplayLength: 50, //默认显示的记录数
        sPaginationType: "full_numbers",
        bScrollCollapse: true,//是否开启DataTables的高度自适应,当数据条数不够分页数据条数的时候,插件高度是否随数据条数而改变  
        bInfo: true,//是否显示页脚信息,DataTables插件左下角显示记录数  
        bProcessing: true,
        ordering: true,
        paging: true,
        aoColumnDefs: [{ "bSortable": false, "aTargets": [ 0 ] }],
        aaSorting: [[2, "asc"]],
});

在controller里抓取信息:

		int StartRow = Convert.ToInt32(Request.Form["start"]);		//分页
                int PageSize = Convert.ToInt32(Request.Form["length"]);		//分页长度
                string order = Request.Form["order[0][column]"];		//要排序的列顺序
                string ColumnSort = Request.Form["columns[" + order + "][data]"];		//排序的列
                string DateSort = Request.Form["columns[" + order + "][name]"];		//若data为空可以定义在name里
                string dir = Request.Form["order[0][dir]"];	//降序或升序

然后就出现一个极为闪耀的方法:

public static Func<T, Tkey> DynamicLambda<T, Tkey>(string propertyName)
{
	ParameterExpression p = Expression.Parameter(typeof(T), "p");
	Expression body = Expression.Property(p, typeof(T).GetProperty(propertyName));
	var lambda = Expression.Lambda<Func<T, Tkey>>(body, p);
	return lambda.Compile();
}

调用:

query.OrderByDescending(DynamicLambda<HRSSCaseModel, string>(ColumnSort)).Skip(StartRow).Take(PageSize).ToList();

query就是返回来的list,类型为var,方法类型为object

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值