jquery.jqGrid源码改造
后端列表接口原会返回列表数据及总条数等,现为提高接口性能将其拆分为两个接口来分别获取数 据与总条数。
发布代码
npm run build
:压缩混淆代码,生成 jquery.jqGrid.min.js
文件。
改造内容
jquery.jqGrid.src.js
中可通过搜索#update#
字符来定位改造内容位置。
在 $.fn.jqGrid
方法初始化 jqGrid
时,如果数据源为接口提供的json数据,则会根据
参数判断是否需要分开请求数据。
this.listGrid.jqGrid({
url: EduBoss.serviceApi.findTwoTeacherClassTwoList,
// 新增参数totalUrl,为请求总数接口
// 当只需要请求数据时,请求参数会带上 getTotal = false
// 当需要请求总数时,请求参数会带上 getTotal = true
totalUrl: EduBoss.serviceApi.findTwoTeacherClassTwoList,
datatype: "json",
postData: submitParam,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
height: 'auto',
colNames: [...],
colModel: [...],
rowNum: EduBoss.rowNum,
rowList: EduBoss.rowList,
pager: '#pagination',
sortname: 'CREATE_TIME',
toolbarfilter: true,
viewrecords: true,
sortorder: "desc",
autowidth: false,
// 分组
groupingView: {
groupField: ['groupId'],
groupSummary: [true],
// 统计数据
groupColumnShow: [true],
groupCollapse: false
},
loadComplete: function (data) {},
gridComplete: function () {},
});
$.fn.jqGrid
中跟数据请求相关的代码在其populate
方法中
迭代历史
2019-03-29
jqGrid初始化时有配置
groupingView.groupColumnShow: [true]
时,在数据更新的过程中会进行数据统计,上个迭代将数据请(列表与中条数)求拆分为2个异步处理的过程,这会导致在渲染数据统计的时候重复渲染(当总条数比列表响应慢的情况下会发生)。
- 改造响应成功回调对
LoadComplete
与AfterLoadComplete
事件的处理机制(列表与总条数最晚响应的那个会触发事件); - 改在
addJSONData
方法,增加参数notRenderGroup
来决定是否会渲染数据统计;
2019-02-25
前面2个版本的处理都是等数据跟总条数的请求都响应完之后再渲染列表,现在将数据及总数分开渲染;
- 不使用
$.when().then()
,直接2个$.ajax()
并列请求,谁先响应处理就先处理谁的代码;
2019-02-20
由于上个版本未考虑到还有用户在使用winXp系统上的Chrome49浏览器,导致ES6的代码不能正确执行。
- 使用jq的
$.when().then()
代替Promise.all().then()
,并将其他ES6改为ES5的代码; - 将打包用的
uglify-es
换成uglify-js
;
2019-01-15
- 使用ES6的
Promise
,let
,...
等语法改写请求数据的相关代码; - 使用
uglify-es
打包代码;