博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC and jqGrid 学习笔记 4-排序
阅读量:6692 次
发布时间:2019-06-25

本文共 2044 字,大约阅读时间需要 6 分钟。

排序(Sorting)分为两种:客户端排序和服务端排序

客户端排序的意思是把数据从数据库里一次性全部提取出来,然后在客户端进行排序,以后每次点击标题进行排序时,就不会给服务端传递请求了。这个“一次性”就是:

loadonce: true

是的没错!在jqgird里加入这句就是客户端排序了,因为jqgrid看到loadonce:true的时候,就会自动把datatype改成local:

datatype: "local"

虽然你设置的是json。

还要注意的是,要在jqgrid里加入sortorder,sortname参数。

加这2个参数的原因是因为我们要用到ViewModel。

为什么要用ViewModel?

因为每次jqgrid向服务端的请求都是那几个参数,每个action里都写那些参数(sidx、sord、page、rows、_search)的话就重复了,Don’t repeat yourself !

从ViewModel开始

一、ViewModel

在解决方案资源管理器里新建一个文件夹ViewModel

添加一个JqGridViewModel.cs类文件,里面的属性就是jqgrid的参数,名称大小写要保持一致。

namespace HelloJqGrid.ViewModel{    public class JqGridViewModel    {        public string sidx { get; set; }        public string sord { get; set; }        public int page { get; set; }        public int rows { get; set; }        public bool _search { get; set; }    }}

二、View

@{    ViewBag.Title = "ShowSorting";}

ShowSorting

三、Controller

服务端的排序需要用到Dynamic Linq,这个可以通过NuGet获得:

然后引入命名空间:

客户端排序和服务端排序的action都是一样的:

//排序        public ActionResult ShowSorting()        {            return View();        }        public ActionResult GetSortingData(JqGridViewModel grid)        {            MyContext db = new MyContext();            var query = db.Members.AsQueryable();            int pageNum  =grid.page;  //当前显示哪一页            int pageSize =grid.rows;  //每一页显示多少条记录            int totalRecords =query.Count();//总记录数            int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);//总页数            //排序-若出现:No property or field 'asc' exists in type 'Member'            //解决办法:检查jqgrid里设置sortorder和sortname参数没有。            query = query.OrderBy(grid.sidx + " " + grid.sord);            var jsonData = new            {                total = totalPages,                page = pageNum,                records = totalRecords,                rows = query.Skip((pageNum - 1) * pageSize).Take(pageSize)//分页            };            return Json(jsonData, JsonRequestBehavior.AllowGet);        }

看一下ViewModel传来的参数:

这样用服务端排序时,点击jqgrid的标题,就可以给服务端传递参数了。

--End--

转载于:https://www.cnblogs.com/ibgo/p/3482084.html

你可能感兴趣的文章
HEVC码流简单分析
查看>>
搭建蚂蚁笔记(服务器)
查看>>
lnmp
查看>>
Oracle教程之Oralce OMF功能详解(三)--使用Oralce OMF管理控制文件
查看>>
C# extern 修饰符的用法
查看>>
Zabbix修正错误两例(只提供解决思路)
查看>>
Redhat6.X 配置HP3PAR7200存储多路径过程
查看>>
Java基础系列19:使用JXL或者POI生成和解析Excel文件
查看>>
使用xshell打开centos中文显示为乱码
查看>>
达内实习——数据库编程、文件读写数据
查看>>
zabbix 监控percona
查看>>
我的友情链接
查看>>
HA高可用集群基础概念和原理
查看>>
MySQL over函数的用法
查看>>
Linux命令(9):mkdir命令
查看>>
vmstat命令
查看>>
poj2245 Lotto
查看>>
我的友情链接
查看>>
Oracle版本升级
查看>>
sizeof 的使用(标记一下)
查看>>