Jqgrid的用法总结与分页功能的拓展
这是本人写的第一个与技术相关的博客,但是非挑战技术的,而是对工作的总结,另外加一点点拓展。
Jqgrid的功能十分强大,强大到可以做到与数据grid相关的任何功能,同时由于在用的过程中总是不能够一气呵成,所以想在此总结一下Jqgrid的用法,为以后省去不必要的麻烦。
Jqgrid的demo也十分的强大,种类繁多,用起来也是十分方便。 http://www.trirand.com/blog/jqgrid/jqgrid.html。
Jqgrid的参数说明: 在挽星的博客里介绍的十分详细,非常感谢。 http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.html。
一、 jqgrid 的准备工作
1.jqgrid是基于jquery和jquery的ui来开发的,所以我们要去jquery的官方网站上去下载jquery及ui库;
2.jqgrid的官方网站上下载jqgrid相关的库;
3.所有需要的js库文件,以及css文件如下
<link rel="stylesheet" type="text/css" href="jquery-ui.css" />
<link rel="stylesheet" type="text/css" href="css/ui.jqgrid.css" />
<script type="text/javascript" src="jquery.1.8.3.js"></script>
<script type="text/javascript" src="jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="i18n/grid.locale-cn.js"></script> (这里是为了资源国际化,可以显示中文)
另外,jqueryui包里边的images文件夹要放在与对应的css文件放在同一目录下。
二、 使用本地数据(未搭建项目的时候,直接使用或是调试)
1)js代码如下:
var mydata = [
{id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
{id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
{id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
{id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
{id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
{id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
{id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
{id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
{id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}
];
var jqgrid_width = 1000;
jQuery("#list").jqGrid({
datatype: "local", //设置使用本地数据(必须)
height: 350, //表格的高度
width: jqgrid_width, //表格的宽度
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], //表格中显示的列标题
colModel:[
{name:'id',index:'id', width:100, height:50, align:"left",sorttype:"int"}, // 这里的name和index保持一致, 与json数据中的key值保持一致
{name:'invdate',index:'invdate', width:100, align:"left",sorttype:"date"},
{name:'name',index:'name', width:150,align:"left"},
{name:'amount',index:'amount', width:150, align:"left",sorttype:"float"},
{name:'tax',index:'tax', width:150, align:"left",sorttype:"float"},
{name:'total',index:'total', width:150,align:"left",sorttype:"float"},
{name:'note',index:'note', width:200, align:"left", sortable:false}
],
rowNum:10,
rowList:[10,20,30],
pager: '#pager',
multiselect: true
}).jqGrid('navGrid','#pager',{edit:false,add:false,del:false});
for(var i=0;i<=mydata.length;i++)
jQuery("#list").jqGrid('addRowData',i+1,mydata[i]);
2)html代码如下:
<table id="list">
</table>
<div id="pager">
</div>
3) 冻结列功能,由于在很多api中并没有介绍,所以在此加上此功能的用法
1.在grid的配置中配置 shrinkToFit:false
2.在colModel中配置 frozen:true
3.grid 执行方法 $grid.jqGrid("setFrozenColumns");
三、 使用远程数据(涉及后端分页,前端分页)
创建一个json格式的文件 data.json.
内容如下:
{
"page":"1",
"total":2,
"records":"13",
"rows":[
{"id":"13","cell":["13","2007-10-06","Client 3","1000.00","0.00","1000.00",null]},
{"id":"12","cell":["12","2007-10-06","Client 2","700.00","140.00","840.00",null]},
{"id":"11","cell":["11","2007-10-06","Client 1","600.00","120.00","720.00",null]},
{"id":"10","cell":["10","2007-10-06","Client 2","100.00","20.00","120.00",null]},
{"id":"9","cell":["9","2007-10-06","Client 1","200.00","40.00","240.00",null]},
{"id":"8","cell":["8","2007-10-06","Client 3","200.00","0.00","200.00",null]},
{"id":"7","cell":["7","2007-10-05","Client 2","120.00","12.00","134.00",null]},
{"id":"6","cell":["6","2007-10-05","Client 1","50.00","10.00","60.00",""]},
{"id":"5","cell":["5","2007-10-05","Client 3","100.00","0.00","100.00","no tax at all"]},
{"id":"4","cell":["4","2007-10-04","Client 3","150.00","0.00","150.00","no tax"]}
],
"userdata":{"amount":3220,"tax":342,"total":3564,"name":"Totals:"}
}
//这里要强调一点是: 后台返回的数据格式必须和上边的一样page代表当前页数,total代表总页数,records代表记录总条数。 userdata是用户自定义的返回数据,可以不包含。
//js代码如下(需后台分页,并将所需参数传递过来):
var jqgrid_width = 1000;
jQuery("#list").jqGrid({
url: "data.json", //设置使用远程数据url(必须)
datatype:"json" //设置接收的数据格式
height: 350, //表格的高度
width: jqgrid_width, //表格的宽度
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:100, height:50, align:"left",sorttype:"int"},
{name:'invdate',index:'invdate', width:100, align:"left",sorttype:"date"},
{name:'name',index:'name', width:150,align:"left"},
{name:'amount',index:'amount', width:150, align:"left",sorttype:"float"},
{name:'tax',index:'tax', width:150, align:"left",sorttype:"float"},
{name:'total',index:'total', width:150,align:"left",sorttype:"float"},
{name:'note',index:'note', width:200, align:"left", sortable:false}
],
jsonReader : {
repeatitems : false,
page:'page',
total:'total',
root:'rows'
},
rowNum:10,
rowList:[10,20,30],
pager: '#pager',
multiselect: true
}).jqGrid('navGrid','#pager',{edit:false,add:false,del:false});
//html代码同上。
另外会有一个问题, 如果数据简单不想后台去分页,可以一次性将数据返回,利用前端分页也是十分方便的。
后台返回一次数据(包含所有的数据,但是数据格式必须同上)
//js代码如下(前端分页):
var jqgrid_width = 1000;
jQuery("#list").jqGrid({
url: "data.json", //设置使用远程数据url(必须)
loadonce: true, //设置只加载一次数据
datatype:"json" //设置接收的数据格式
height: 350, //表格的高度
width: jqgrid_width, //表格的宽度
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:100, height:50, align:"left",sorttype:"int"},
{name:'invdate',index:'invdate', width:100, align:"left",sorttype:"date"},
{name:'name',index:'name', width:150,align:"left"},
{name:'amount',index:'amount', width:150, align:"left",sorttype:"float"},
{name:'tax',index:'tax', width:150, align:"left",sorttype:"float"},
{name:'total',index:'total', width:150,align:"left",sorttype:"float"},
{name:'note',index:'note', width:200, align:"left", sortable:false}
],
rowNum:10,
rowList:[10,20,30],
pager: '#pager',
multiselect: true
}).jqGrid('navGrid','#pager',{edit:false,add:false,del:false});
//html代码同上
至此,jqgrid 的基本用法已经算是介绍完了。其功能的强大之处,请仔细阅读挽星关于jqgrid的参数介绍。
四、 jqgrid 分页插件拓展
jqgrid分页功能虽然强大,但是分页的样式却不能适用于我们工作中的很多种情况,所以,想借此拓展一下jqgrid的分页功能
var jqgrid_width = 1000;
jQuery("#list").jqGrid({
url: "data.json", //设置使用远程数据url(必须)
loadonce: true, //设置只加载一次数据
datatype:"json" //设置接收的数据格式
height: 350, //表格的高度
width: jqgrid_width, //表格的宽度
scrollOffset: 0, //这是jqgrid用来显示右侧滚动条专门为其留的位置,设置为0即可隐藏
colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:100, height:50, align:"left",sorttype:"int"},
{name:'invdate',index:'invdate', width:100, align:"left",sorttype:"date"},
{name:'name',index:'name', width:150,align:"left"},
{name:'amount',index:'amount', width:150, align:"left",sorttype:"float"},
{name:'tax',index:'tax', width:150, align:"left",sorttype:"float"},
{name:'total',index:'total', width:150,align:"left",sorttype:"float"},
{name:'note',index:'note', width:200, align:"left", sortable:false}
],
jsonReader : {
repeatitems : false,
page:'page',
total:'total',
root:'rows'
}
});
自定义它的分页功能需要实现几个方法即可,即当你点击自定的分页按钮是,按照下边的参数方式重新加载jqgrid即可实现翻页
jQuery("#datalist").setGridParam({
postData: {}, //这里传递自定义的参数
page: 2 //这里传递想要跳转的页数,即可实现翻页(上一页,下一页,首页,尾页,跳转等等)
}).trigger("reloadGrid");
写到这里突然发现介绍的还是比较简单的,所以以后会继续补充。
Jqgrid的用法总结与分页功能的拓展的更多相关文章
- 【APS.NET Core】- Razor Page 使用jqgrid实现分页功能
本文将使用jqgrid在Razor Page中实现分页功能. 前台 List.cshtml代码如下: @page @model ListModel @{ Layout = "~/Pages/ ...
- 简单封装分页功能pageView.js
分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...
- python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法
python_way day18 html-day4 1.Django-路由系统 - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...
- Django学习笔记(12)——分页功能
这一篇博客记录一下自己学习Django中分页功能的笔记.分页功能在每个网站都是必要的,当页面因需要展示的数据条目过多,导致无法全部显示,这时候就需要采用分页的形式进行展示. 分页在网站随处可见,下面展 ...
- 搭建自己的博客(九):使用shell模式批量添加博客文章并增加分页功能
想做个博客分页功能,但是没有太多的文章.所以使用shell命令行创建多篇文章. 1.打开pycharm下的terminal终端 python manage.py shell # 打开python终端 ...
- Flutter 分页功能表格控件
老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来. PaginatedDataTable PaginatedDataTable是一个带分页功能的DataTabl ...
- 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- php对文本文件进行分页功能简单实现
php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...
随机推荐
- 给C++初学者的50个忠告(好文转载)
给C++初学者的50个忠告 1.把C++当成一门新的语言学习(和C没啥关系!真的.): 2.看<Thinking In C++>,不要看<C++变成死相>: 3. ...
- PHP MYSQL读取中文乱码的解决办法
其他试了很多种办法,结果最直接最简单的办法就是在SELECT前先发送设置.如下 mysqli_query($con,"SET NAMES 'UTF8'"); mysqli_quer ...
- 纯css实现三角形
在设计界面的时候,通常需要三角形的图标,一般做法是用图片,其实也可以使用css来实现.如下: 向上的三角形 向右的三角形 向下的三角形 向左的三角形 实现它们的css分别是: .top ...
- Linux定时任务crontab命令使用详解
1.crontab功能介绍: crontab的功能是在一定的时间间隔内定时执行一些命令. 2.crontab参数详解: 1 crontab -u //设定某个用户的cron服务,一般root用户在执行 ...
- Java订单号(时间加流水号)
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 转:内核空间与用户空间数据交换的方式之一 --ioctl(通过字符设备演示)
对于linux而言,内核程序和用户程序分别运行在内核空间和用户空间,要实现两者的数据交换,主要有以下几种方式:系统调用,读写系统文件(procfs,sysfs, seq_file,debugfs等), ...
- 关于C51的中断函数要注意的几个问题
转载自:http://blog.21ic.com/user1/531/archives/2006/16909.html 最近在虾潭逛,发现一些小虾米对C51中断函数有些不了解,今天周末,抽空发个技术帖 ...
- DACL, NULL or not NULL
上周 hBifTs在折腾他的文件映射封装类的时候,碰到了不能在 ASP.NET 中直接打开由桌面程序创建的内核对象的问题. 内存映射文件与用户权限 他当时是的方法是修改 ASP.NET 配置文件,让 ...
- BZOJ3296: [USACO2011 Open] Learning Languages
3296: [USACO2011 Open] Learning Languages Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 81 Solved: ...
- 【转】使用dos2unix批量转换文件
原文网址:http://kuaile.in/archives/1208 dos2unix是Linux下的一个用户转换格式的程序,由于windows上文件的结束符和linux上的不同,那么在window ...