给你一个我写好的分页方法:
function pagerFilter(data) {//分页事件
if (typeof data.length == 'number' && typeof data.splice == 'function') { // is array
data = {
total: data.length,
rows: data
}
}
var dg = $(this);
var opts = dg.datagrid('options');
var pager = dg.datagrid('getPager');
pager.pagination({
onSelectPage: function (pageNum, pageSize) {
dg.datagrid('loading');
setTimeout(function () {
opts.pageNumber = pageNum;
opts.pageSize = pageSize;
pager.pagination('refresh', {
pageNumber: pageNum,
pageSize: pageSize
});
dg.datagrid('loadData', data);
}, 1);
},
onChangePageSize: function (pageSize) {
var dgID = dg.attr("id");
$.cookie(dgID, pageSize, { expires: 365 });
}
});
if (!data.originalRows) {
data.originalRows = (data.rows);
}
if (!opts.remoteSort && opts.sortName) {
var target = this;
var names = opts.sortName.split(',');
var orders = opts.sortOrder.split(',');
data.originalRows.sort(function (r1, r2) {
var r = 0;
for (var i = 0; i < names.length; i++) {
var sn = names[i];
var so = orders[i];
var col = $(target).datagrid('getColumnOption', sn);
var sortFunc = col.sorter || function (a, b) {
return a == b ? 0 : (a > b ? 1 : -1);
};
r = sortFunc(r1[sn], r2[sn]) * (so == 'asc' ? 1 : -1);
if (r != 0) {
return r;
}
}
return r;
});
}
var maxPage = Math.ceil(data.originalRows.length / parseInt(opts.pageSize));
maxPage = maxPage == 0 ? 1 : maxPage;
opts.pageNumber = maxPage < opts.pageNumber ? maxPage : opts.pageNumber;
var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
var end = start + parseInt(opts.pageSize);
data.rows = (data.originalRows.slice(start, end));
return data;
}
$("#grid").datagrid({
.....前面的属性略
loadFilter: pagerFilter
});
其实吧,我觉得,反正我用的时候,所有的Grid都是需要这个分页方法的。所以,我就直接把grid的默认值改掉。这样,就不用每个grid都去绑定loadFilter了。
if ($.fn.datagrid) {
$.fn.datagrid.defaults.loadFilter = pagerFilter; //分页事件
}
希望能帮到你。