jquery easyui datagrid mvc server端分页排序筛选的实现
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端分页排序筛选的实现的更多相关文章
- jquery easyui datagrid 分页 详解
前些天用jquery easyui的table easyui-datagrid做分页显示的时候,折腾了很久,后来终于解决了.其实不难,最主要我不是很熟悉前端的东西. table easyui-data ...
- 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% ...
- jquery easyui datagrid使用参考
jquery easyui datagrid使用参考 创建datagrid 在页面上添加一个div或table标签,然后用jquery获取这个标签,并初始化一个datagrid.代码如下: 页面上 ...
- Jquery easyui datagrid 导出Excel
From:http://www.cnblogs.com/weiqt/articles/4022399.html datagrid的扩展方法,用于将当前的数据生成excel需要的内容. 1 <sc ...
- 扩展jquery easyui datagrid编辑单元格
扩展jquery easyui datagrid编辑单元格 1.随便聊聊 这段时间由于工作上的业务需求,对jquery easyui比较感兴趣,根据比较浅薄的js知识,对jquery easyui中的 ...
- Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页
package loaderman.fy.action; import java.io.IOException; import java.io.PrintWriter; import java.uti ...
- jQuery EasyUI DataGrid Checkbox 数据设定与取值
纯粹做个记录,以免日后忘记该怎么设定. 这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数 ...
- jquery easyui datagrid 获取Checked选择行(勾选行)数据
原文:jquery easyui datagrid 获取Checked选择行(勾选行)数据 getSelected:取得第一个选中行数据,如果没有选中行,则返回 null,否则返回记录. getSel ...
- jquery easyui datagrid 加每页合计和总合计
jquery easyui datagrid 加每页合计和总合计 一:效果图 二:代码实现 这个只有从后台来处理 后台根据rows 和page两个参数返回的datatable 命名为dt 然后根据dt ...
随机推荐
- [翻译]高并发框架 LMAX Disruptor 介绍
原文地址:Concurrency with LMAX Disruptor – An Introduction 译者序 前些天在并发编程网,看到了关于 Disruptor 的介绍.感觉此框架惊为天人,值 ...
- linux 查看信息-系统&资源
系统 1.查看内核/操作系统/CPU信息 2.查看操作系统版本 3.查看CPU信息 4.查看计算机名 5.列出所有PCI设备 6.列出所有的USB设备 7.列出加载的内核模块 8.查看环境变量 资源 ...
- ubuntu下搭建一个数据化处理的开发环境
1.搭建matplotlib环境 构建matplotlib运行环境,需要满足相关软件环境. numpy库提供大数据集的数据的数据结构和数学方法.诸如元组.列表或字典等python的默认数据结构同样可以 ...
- esp32的GPIO操作
对于任何一款芯片,GPIO接口是其最基本的组成部分,也是一款芯片入门的最基本操作,下面论述下 关于esp32开发版的GPIO操作,本文中重点讲解下 关于如何创建eclipse工程,并通过eclipse ...
- Pycharm2018的激活方法或破解方法
1.授权服务器激活 优点:方便快捷 缺点:激活的人数多了就容易被封杀,所以可能经常需要去激活 选择License server激活,然后填入: idea.qmanga.com或http://xidea ...
- Python学习第三章
1.模块: 其实每个.py文件本身就是一个模块,当读者做完了一个.py文件,如果别人打算直接分享你的成果,只要在他编写的.py文件中倒入(import)就好了. 比如想在hello1.py文件里直接使 ...
- Xcode8.0 / OS X EI Capitan 10.11.6 提交报错90111
改用新系统和新版xcode(都是正式版)后,提交App Store审核时报错: INFO ITMS-90111: "Beta Toolchain. 构建新的 App 和App 更新时,必须使 ...
- redis知识点杂记
最近梳理了一下redis的基本知识.本文会从redis的简单使用.redis的数据类型.redis持久化三个方面做简单阐述和总结. 一.Redis基本操作 1.key的规则 不能使用\n空格.其他都可 ...
- HSmartWindowControl之安装篇 (Visual Studio 2013 & Halcon 18)
1.环境简介 Visual Studio 2013社区版 Halcon18.05 2.使用Nuget在VS工程中安装Halcon插件 搜索栏输入关键字halcon,出现两个插件,分别是halcon语言 ...
- 2017CS231n学习笔记——计算机视觉的概述
本节课主要讲述了cs231n课程的背景和计算机视觉的历史,也主要介绍了目前很重要的一个计算机视觉数据集--IMAGENET. 更多内容参考我的AI学习之路 课程简介 这门课程是由stanford大学计 ...