1自定义一个ModelBinder

 public class filterRule{public string field { get; set; }public string op { get; set; }public string value { get; set; }}public class dataGridFilter{public dataGridFilter(){filterRules = new HashSet<filterRule>();}public int page { get; set; }public int rows { get; set; }public string sort { get; set; }public string order { get; set; }public IEnumerable<filterRule> filterRules { get; set; }}public class DataGridFilterBinderProvider : IModelBinder{public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext){if (controllerContext == null)throw new ArgumentNullException("controllerContext", "controllerContext is null.");if (bindingContext == null)throw new ArgumentNullException("bindingContext", "bindingContext is null.");if (bindingContext.ModelType == typeof(dataGridFilter)){HttpRequestBase request = controllerContext.HttpContext.Request;dataGridFilter filter = new dataGridFilter();if (request.HttpMethod == "GET"){filter.order = request.QueryString["order"];filter.page = Convert.ToInt32(request.QueryString["page"]);filter.rows = Convert.ToInt32(request.QueryString["rows"]);filter.sort = request.QueryString["sort"];var filterRules = request.QueryString["filterRules"];if (!string.IsNullOrEmpty(filterRules)){var rules = JsonConvert.DeserializeObject<IEnumerable<filterRule>>(filterRules);filter.filterRules = rules;}return filter;}else {filter.order = request.Form["order"];filter.page = Convert.ToInt32(request.Form["page"]);filter.rows = Convert.ToInt32(request.Form["rows"]);filter.sort = request.Form["sort"];var filterRules = request.Form["filterRules"];if (!string.IsNullOrEmpty(filterRules)){var rules = JsonConvert.DeserializeObject<IEnumerable<filterRule>>(filterRules);filter.filterRules = rules;}return filter;}}else{return BindModel(controllerContext, bindingContext);}}private Nullable<T> TryGet<T>(ModelBindingContext bindingContext, string key) where T : struct{if (String.IsNullOrEmpty(key))return null;ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "." + key);if (valueResult == null && bindingContext.FallbackToEmptyPrefix == true)valueResult = bindingContext.ValueProvider.GetValue(key);bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueResult);if (valueResult == null)return null;try{return (Nullable<T>)valueResult.ConvertTo(typeof(T));}catch (Exception ex){bindingContext.ModelState.AddModelError(bindingContext.ModelName, ex);return null;}}}

  controller代码

 public ActionResult Get([ModelBinder(typeof(DataGridFilterBinderProvider))]dataGridFilter request){//var filter = JsonConvert.DeserializeObject<IEnumerable< filterRule>>(filterRules);//int page = 1; int rows = 10; string sort = "Id"; string order = "asc"; ; IEnumerable<filterRules> filterRules = null;int count = products.Count();//var query = products.OrderBy(string.Format("{0} {1}", sort, order)).Skip((page-1)*rows).Take(rows);var query = products.OrderBy(string.Format("{0} {1}", request.sort, request.order)).Skip((request.page - 1) * request.rows).Take(request.rows);return Json(new { total = count, rows = query }, JsonRequestBehavior.AllowGet);}

  html代码

<script type="text/javascript">$(function () {$('#grid').datagrid({title: 'Product--100',url: '/Home/Get',method:'post',width: '100%',height: 'auto',rownumbers: true,sortName: 'Id',SortOrder: 'asc',columns: [[{ field: 'Id', title: 'Id', sortable: true },{ field: 'Name', title: 'Name', sortable: true },{ field: 'Unit', title: 'Unit', sortable: true },{ field: 'Price', title: 'Price', sortable: true }]],pagination: true,pagePosition: 'bottom',pageSize: 10,enableFilter:true,remoteFilter:true}).datagrid('enableFilter');})</script>

  

jquery easyui datagrid mvc server端分页排序筛选的实现相关推荐

  1. jquery easyui dataGrid动态改变排序字段名

    2019独角兽企业重金招聘Python工程师标准>>> jquery easyui dataGrid 动态改变排序字段名,一般情况下,在使用的时候,我们会点击相应字段进行排序, 这里 ...

  2. jQuery EasyUI datagrid实现本地分页的方法

    本文实例讲述了jQuery EasyUI datagrid实现本地分页的方法.分享给大家供大家参考.具体如下: 一般分页都是后台做,前端做无论从哪方面考虑都不合适.但是有的时候还是有这种需求. 这里重 ...

  3. jQuery EasyUI DataGrid Checkbox 数据设定与取值

    纯粹做个记录,以免日后忘记该怎么设定. 这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数 ...

  4. jQuery EasyUI DataGrid 分页 FOR ASP.NET

    源代码: 前台(html): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  5. jquery easyui datagrid 分页 详解

    http://www.cnblogs.com/huozhicheng/archive/2011/09/27/2193605.html 由于项目原因,用了jquery easyui 感觉界面不错,皮肤样 ...

  6. jQuery EasyUI datagrid本地分页

    2019独角兽企业重金招聘Python工程师标准>>> 代码如下: <!DOCTYPE html> <html> <head> <meta ...

  7. Jquery Easyui Datagrid创建代码

    引用easyui <link rel="stylesheet" type="text/css" href="../themes/default/ ...

  8. jquery easyui DataGrid 数据表格 属性

    扩展自 $.fn.panel.defaults ,用 $.fn.datagrid.defaults 重写了 defaults . 依赖 panel resizable linkbutton pagin ...

  9. 让jquery easyui datagrid列支持绑定嵌套对象

    嵌套对象是指返回的json数据,是对象的某个属性自带有属性.而我们恰恰又需要这个属性,默认情况下easyui的datagrid是不支持绑定嵌套对象的.比如:datagrid的field属性只能为fie ...

最新文章

  1. emui10有机会升级鸿蒙,鸿蒙OS+EMUI10,能否助力华为实现科技突围?
  2. jsp java语法_javaweb-jsp语法
  3. 迁移聊天记录到Teams
  4. 如何在 Asp.Net Core 中对请求进行限流
  5. tablednd保存 php,TableDnD-JavaScript中文网-JavaScript教程资源分享门户
  6. python处理era5_ERA5数据python批量下载程序
  7. vue - (v-pre、v-cloak、v-once)
  8. 服务器托管用户支招选择IDC经验
  9. JS获取浏览器版本号
  10. 《图解网络硬件》网络硬件通用基础知识
  11. 中西方对时间的差异_中西方时间表达的认知差异
  12. 最好最实用的PHP二次开发教程
  13. 修复无线网卡网络适配器报错代码56
  14. 〖Python自动化办公篇⑤〗- 文件自动化管理 - 清理重复的文件与批量修改文件名
  15. python绘制图形沙漏_sandglass(沙漏)——一个让人解脱的python时间处理库
  16. 如何安装成英文版本的vmware
  17. c语言编程实现dsa算法,椭圆曲线加密算法的C语言实现.doc
  18. UEFI and legacy
  19. 怎么更换kindle 4的字体?zz
  20. CSUST 2007-我爱吃烧烤(状压DP)

热门文章

  1. 第三周项目5-数组作数据成员
  2. 通过FTP4J 实现 FTPS 连接
  3. Asp.net在IIS6.0权限设置的问题,大牛进
  4. windows 命令收集
  5. 11个提升编程能力的小方法
  6. 上一页下一页_Excel打印时一页放不下,4招轻松搞定,省下的纸叫老板加工资
  7. MySQL高级 - 常用工具 - mysqlimport与source
  8. Nginx负载均衡策略之url_hash
  9. rdb和aof优势劣势
  10. ConcurrentHashMap的源码分析-扩容结束以后的退出机制