1自定义一个ModelBinder

  1. public class filterRule
  2. {
  3. public string field { get; set; }
  4. public string op { get; set; }
  5. public string value { get; set; }
  6. }
  7. public class dataGridFilter
  8. {
  9. public dataGridFilter()
  10. {
  11. filterRules = new HashSet<filterRule>();
  12. }
  13. public int page { get; set; }
  14. public int rows { get; set; }
  15. public string sort { get; set; }
  16. public string order { get; set; }
  17. public IEnumerable<filterRule> filterRules { get; set; }
  18. }
  19.  
  20. public class DataGridFilterBinderProvider : IModelBinder
  21. {
  22. public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
  23. {
  24. if (controllerContext == null)
  25. throw new ArgumentNullException("controllerContext", "controllerContext is null.");
  26. if (bindingContext == null)
  27. throw new ArgumentNullException("bindingContext", "bindingContext is null.");
  28. if (bindingContext.ModelType == typeof(dataGridFilter))
  29. {
  30. HttpRequestBase request = controllerContext.HttpContext.Request;
  31. dataGridFilter filter = new dataGridFilter();
  32. if (request.HttpMethod == "GET")
  33. {
  34. filter.order = request.QueryString["order"];
  35. filter.page = Convert.ToInt32(request.QueryString["page"]);
  36. filter.rows = Convert.ToInt32(request.QueryString["rows"]);
  37. filter.sort = request.QueryString["sort"];
  38. var filterRules = request.QueryString["filterRules"];
  39. if (!string.IsNullOrEmpty(filterRules))
  40. {
  41. var rules = JsonConvert.DeserializeObject<IEnumerable<filterRule>>(filterRules);
  42. filter.filterRules = rules;
  43.  
  44. }
  45.  
  46. return filter;
  47. }
  48. else {
  49. filter.order = request.Form["order"];
  50. filter.page = Convert.ToInt32(request.Form["page"]);
  51. filter.rows = Convert.ToInt32(request.Form["rows"]);
  52. filter.sort = request.Form["sort"];
  53. var filterRules = request.Form["filterRules"];
  54. if (!string.IsNullOrEmpty(filterRules))
  55. {
  56. var rules = JsonConvert.DeserializeObject<IEnumerable<filterRule>>(filterRules);
  57. filter.filterRules = rules;
  58.  
  59. }
  60.  
  61. return filter;
  62. }
  63.  
  64. }
  65. else
  66. {
  67. return BindModel(controllerContext, bindingContext);
  68. }
  69. }
  70.  
  71. private Nullable<T> TryGet<T>(ModelBindingContext bindingContext, string key) where T : struct
  72. {
  73. if (String.IsNullOrEmpty(key))
  74. return null;
  75.  
  76. ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "." + key);
  77. if (valueResult == null && bindingContext.FallbackToEmptyPrefix == true)
  78. valueResult = bindingContext.ValueProvider.GetValue(key);
  79.  
  80. bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueResult);
  81.  
  82. if (valueResult == null)
  83. return null;
  84.  
  85. try
  86. {
  87. return (Nullable<T>)valueResult.ConvertTo(typeof(T));
  88. }
  89. catch (Exception ex)
  90. {
  91. bindingContext.ModelState.AddModelError(bindingContext.ModelName, ex);
  92. return null;
  93. }
  94. }
  95. }

  controller代码

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

  html代码

  1. <script type="text/javascript">
  2.  
  3. $(function () {
  4. $('#grid').datagrid({
  5. title: 'Product--100',
  6. url: '/Home/Get',
  7. method:'post',
  8. width: '100%',
  9. height: 'auto',
  10. rownumbers: true,
  11. sortName: 'Id',
  12. SortOrder: 'asc',
  13. columns: [[
  14. { field: 'Id', title: 'Id', sortable: true },
  15. { field: 'Name', title: 'Name', sortable: true },
  16. { field: 'Unit', title: 'Unit', sortable: true },
  17. { field: 'Price', title: 'Price', sortable: true }
  18. ]],
  19. pagination: true,
  20. pagePosition: 'bottom',
  21. pageSize: 10,
  22. enableFilter:true,
  23. remoteFilter:true
  24. }).datagrid('enableFilter');
  25.  
  26. })
  27.  
  28. </script>

  

jquery easyui datagrid mvc server端分页排序筛选的实现的更多相关文章

  1. jquery easyui datagrid 分页 详解

    前些天用jquery easyui的table easyui-datagrid做分页显示的时候,折腾了很久,后来终于解决了.其实不难,最主要我不是很熟悉前端的东西. table easyui-data ...

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

    http://www.codeweblog.com/jquery-easyui-datagrid%e5%ae%9e%e7%8e%b0%e6%9c%ac%e5%9c%b0%e5%88%86%e9%a1% ...

  3. jquery easyui datagrid使用参考

    jquery easyui datagrid使用参考   创建datagrid 在页面上添加一个div或table标签,然后用jquery获取这个标签,并初始化一个datagrid.代码如下: 页面上 ...

  4. Jquery easyui datagrid 导出Excel

    From:http://www.cnblogs.com/weiqt/articles/4022399.html datagrid的扩展方法,用于将当前的数据生成excel需要的内容. 1 <sc ...

  5. 扩展jquery easyui datagrid编辑单元格

    扩展jquery easyui datagrid编辑单元格 1.随便聊聊 这段时间由于工作上的业务需求,对jquery easyui比较感兴趣,根据比较浅薄的js知识,对jquery easyui中的 ...

  6. Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页

    package loaderman.fy.action; import java.io.IOException; import java.io.PrintWriter; import java.uti ...

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

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

  8. jquery easyui datagrid 获取Checked选择行(勾选行)数据

    原文:jquery easyui datagrid 获取Checked选择行(勾选行)数据 getSelected:取得第一个选中行数据,如果没有选中行,则返回 null,否则返回记录. getSel ...

  9. jquery easyui datagrid 加每页合计和总合计

    jquery easyui datagrid 加每页合计和总合计 一:效果图 二:代码实现 这个只有从后台来处理 后台根据rows 和page两个参数返回的datatable 命名为dt 然后根据dt ...

随机推荐

  1. Could not transfer artifact org.springframework

    无法从中心仓库获取该版本的信息, 从新下载: 1.配置eclipse中的maven  user setting路径为本地maven安装路径 配置阿里云镜像路径 <mirror> <i ...

  2. JAVA 8 主要新特性 ----------------(三)新功能Lambda表达式入门

    一.简述       Java为了扩充匿名方法在1.8中新追加的特性.本身Java之前的版本是没有匿名方法的,只有匿名对象. 二.使用        Java中使用匿名方法必须要对应接口中的一个抽象方 ...

  3. UVa 11728 Alternate Task (枚举)

    题意:给定一个 n,求一个最大正整数 N 使得 N 的所有正因数和等于 n. 析:对于任何数一个 n,它的所有正因子都是大于等于本身的,因为 n 本身就是自己的正因数,这样的就可以直接暴力了,答案肯定 ...

  4. Spring AOP中pointcut expression表达式

    Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&am ...

  5. HSmartWindowControl之安装篇 (Visual Studio 2013 & Halcon 18)

    1.环境简介 Visual Studio 2013社区版 Halcon18.05 2.使用Nuget在VS工程中安装Halcon插件 搜索栏输入关键字halcon,出现两个插件,分别是halcon语言 ...

  6. 重新编译安装swoole支持OpenSSL

    1.下载:wget http://pecl.php.net/get/swoole-1.9.22.tgz 2.解压:tar zxvf swoole-1.9.22.tgz 3.扩展模块:cd swoole ...

  7. MyBatis 源码分析 - 配置文件解析过程

    * 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...

  8. Linux下Redis安装使用教程

    https://redis.io/download 第一步:安装redis需要在有c语言的编译环境下,执行命令安装c语言环境: yum install gcc-c++ https://blog.csd ...

  9. [Swift]键盘遮挡控件

    键盘遮挡控件: super.viewDidLoad(){ // Do any additional setup after loading the view, typically from a nib ...

  10. tk.mybatis通用工具采坑记

    tk.mybatis通用工具pom <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot&l ...