jqGrid的使用记录(实现分页、搜索功能)

jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信。

一、要引用的文件

要使用jqGrid,首先页面上要引入如下css与js文件。

1、css

<link href="https://www.jb51.net/css/ui.jqgrid.css" type="text/css" />

2、js

  <script src='https://www.jb51.net/Scripts/js/jquery-2.0.3.min.js' type="text/javascript"></script>   <script src='https://www.jb51.net/Scripts/js/jqGrid/jquery.jqGrid.min.js' type="text/javascript"></script>   <script src='https://www.jb51.net/Scripts/js/jqGrid/i18n/grid.locale-en.js' type="text/javascript"></script>

二、使用要点说明

1、获取值

(1)、获取单个id

获取行号,有这种方式:

var rowid = $("#grid-table").jqGrid("getGridParam", "selrow");

但是经过实际验证,这种方式不可行,当选中行,再点击同一行会出现获取不到行号的情况。

最后先在js最外部定义一个变量selId,然后使用如下代码在选中行时赋值:

onSelectRow: function (rowid, status) {     selId = rowid;  //给最外层的selId赋值   }

(2)、获取多个选中行的id

var ids=$('#gridTable').jqGrid('getGridParam','selarrrow');

其输出格式是逗号分隔的id,如:

1,2,3,4,5

(3)、获得所有行的ID数组

var ids = $("jqgridtableid").jqGrid('getDataIDs');

(4)、获取行数据

如果想获取选择的行的数据,只要传入rowId即可,如下:

var rowData = $('#gridTable').jqGrid('getRowData',rowId);

而这个rowData是一个对象,如果要获取选择的行的这个对象的属性值,如name的值,需如下:

var Name= rowData.name;

(5)、获取单元格数据

var celldata = $("jqgridtableid").jqGrid('getCell',id,colnum);

(6)、设定行选中

  //设定选中行,可设定多行选中:   $("jqgridtableid").jqGrid('setSelection',id1);   $("jqgridtableid").jqGrid('setSelection',id2);

2、自定义分页、数据交互

何谓自定义?就是允许你用你自己喜欢的js对象与后端做数据交互。如jsonReader。

如果这个地方的Id设置错了,那么jqGrid就会自动以行号作为Id,这样会影响删除的。如果根据Id来删,很有可能删错行。

jsonReader: {     id: "Id", //相当于设置主键     root: "JsonArray",    //Json数据     total: "TotalPage",   //总页数     page: "CurrentPage",  //当前页     records: "TotalRecord",//总记录数     repeatitems: false   },

这样一来,对于数据表格,在C#中,我可以用一个泛型类,就能够与jqGrid表格进行交互(其中,包括了分页信息,数据内容)。

/// <summary> /// 分页ViewModel /// </summary> public class jQGrid<T> where T : class { public jQGrid() { } /// <summary> /// 带4个参数的构造函数 /// </summary> /// <param>每页显示行数</param> /// <param>当前页</param> /// <param>结果总记录数</param> /// <param>JSON数据</param> public jQGrid(int rows, int currentPage, int totalRecord, IList<T> jsonArray) { TotalPage = this.CalculateTotalPage(rows, totalRecord); CurrentPage = currentPage; TotalRecord = totalRecord; JsonArray = jsonArray; } public int TotalPage { get; set; } public int CurrentPage { get; set; } public int TotalRecord { get; set; } public IList<T> JsonArray { get; set; } /// <summary> /// 根据每页显示数与总记录数计算出总页数 /// </summary> /// <param>每页显示数</param> /// <param>结果总记录数</param> /// <returns></returns> public int CalculateTotalPage(int rows, int totalRecord) { return Convert.ToInt32(Math.Ceiling((double)totalRecord / (double)rows)); } }

3、搜索的实现

搜索的实现主要通过jqGrid的postData像服务器端传递参数。

$("#btnSearch").click(function () {     var rules = "";     $("#multipleSearchDialog").each(function (i) {       $(".div-padding :input").each(function () {         if ($(this).val()) {           rules += '"' + $(this).attr("name") + '":"' + $(this).val() + '"';         }       })     }); ParamJson = '{' + rules + '}'; var postData = $("#grid-table").jqGrid("getGridParam", "postData"); $.extend(postData, { Param: ParamJson }); $("#grid-table").jqGrid("setGridParam", { search: true }).trigger("reloadGrid", [{ page: 1}]); //重载JQGrid   });

搜索功能主要通过postData向服务器端传递数据。后端获取参数从而进行处理:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzzpxj.html