这是本人写的第一个与技术相关的博客,但是非挑战技术的,而是对工作的总结,另外加一点点拓展。

  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的官方网站上去下载jqueryui库;

    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的用法总结与分页功能的拓展的更多相关文章

  1. 【APS.NET Core】- Razor Page 使用jqgrid实现分页功能

    本文将使用jqgrid在Razor Page中实现分页功能. 前台 List.cshtml代码如下: @page @model ListModel @{ Layout = "~/Pages/ ...

  2. 简单封装分页功能pageView.js

    分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...

  3. python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法

    python_way day18 html-day4 1.Django-路由系统   - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...

  4. Django学习笔记(12)——分页功能

    这一篇博客记录一下自己学习Django中分页功能的笔记.分页功能在每个网站都是必要的,当页面因需要展示的数据条目过多,导致无法全部显示,这时候就需要采用分页的形式进行展示. 分页在网站随处可见,下面展 ...

  5. 搭建自己的博客(九):使用shell模式批量添加博客文章并增加分页功能

    想做个博客分页功能,但是没有太多的文章.所以使用shell命令行创建多篇文章. 1.打开pycharm下的terminal终端 python manage.py shell # 打开python终端 ...

  6. Flutter 分页功能表格控件

    老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来. PaginatedDataTable PaginatedDataTable是一个带分页功能的DataTabl ...

  7. 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...

  8. Django 实现分页功能(django 2.2.7 python 3.7.5 )

    Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...

  9. php对文本文件进行分页功能简单实现

    php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...

随机推荐

  1. 以下是jQuery和JavaScript实现相同操作的等价代码。

    选择元素  Javascript代码 1.// jQuery   2.var els = $('.el');   3.  4.// 原生方法   5.var els = document.queryS ...

  2. Rational Rose 7.0的使用(转)

    1.Rose如何隐藏类的属性和操作? 右击类图,选择Options->Suppress Attributes/Suppress Operations 2.Rose中如何表示双向关联? 右击关联线 ...

  3. flowplayer+flashhls使用过程中发现的一些小问题

    flashls里边有好几套代码,主要看生成路径,其中flowplayer用了flashls.swc,flashls.swc使用的代码在这里:/src/org/mangui/hls,所以要注意,当搜索代 ...

  4. 在RichTextBox控件中添加图片和文字

    public void SetText(RichTextBox rtb) { rtb.Text = "在RichTextBox控件中添加图片和文字" + Environment.N ...

  5. 用C++类模板实现栈结构出现的问题以及思考

    C++中使用了模板来减少方法相同但是类型不一样带来的函数重载以及大量复制代码的问题.这里主要说说类模板   类模板的定义:   template<TYPENAME Type>   clas ...

  6. [Python 3.x 官方文档翻译]The Python Tutorial Python教程

    Python is an easy to learn, powerful programming language. It has efficient high-level data structur ...

  7. 在线安装maven插件问题:Cannot complete the install because one or more required items could not be found.

    用Eclipse在线安装的方式:Help-->Install  New Software 地址输入:http://m2eclipse.sonatype.org/sites/m2e/,列表中打勾勾 ...

  8. Android中的SQLiteOpenHelper类

    SQLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新.一般的用法是创建SQLiteOpenHelper的子类,并扩张它的onCreate(SQ ...

  9. Activity大致会经过如下四个状态

    1.活动主题:当前Activity位于前台,用户可见,可以获得焦点.2.暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点.3.停止状态:该Activity不可见,失 ...

  10. COJ 0802 非传统题(二)

    (颓了这么多天是时候干点正事了QAQ) 非传统题(二) 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 还是很久很久以前,chx ...