EasyUI Datagrid组件在我看来功能还是很强大的,在我使用过程中遇到分页请求的问题困扰了一天才解决,下面我就把我遇到的问题分享一下
//datagrid数据表格渲染
$("#dg").datagrid({
loader: function(param, success, error) {
var pageNumber = param.page;
var pageSize = param.rows;
$.ajax({
type: "get",
url: url,
dataType: 'jsonp',
data: "pageNum=" + pageNumber + "&pageSize=" + pageSize,
success: function(data) {
if(data.code == 0) {
var arr = data.result.content;
$("#dg").datagrid('loadData', { total: data.result.page.totalRecord, rows: arr })
}
},
error: function() {
error.apply(this, arguments);
}
});
}
})
传入的参数有param, success, error可选
这里我主要用到了param,param有param.page(页码)和param.rows(每页显示行数)两个属性,由于页面载入之后就要进行查询,所以这个参数是必须的;
一 遇到的第一个问题是跨域,这个在之前的文章有些过,这里就不赘述了;
二 其次就是请求回的数据怎么渲染到表格中,由于是真分页,所以每次查询的数据只是当前页面的数据,并不是所有的数据,但是页脚显示数据总数必须是所有数据,这样才能就行分页。
最后通过查看资料发现,loadData方法可以传入一个json格式的数据$("#dg").datagrid('loadData', { total: data.result.page.totalRecord, rows: arr }),这样就解决了数据渲染分页请求的问题
三 由于我启用了loadMsg属性,即在请求后台数据的时候会显示正在加载的状态,但是请求成功之后此状态并未隐藏,最后通过设置
onLoadSuccess: function(data) {
//查询成功是隐藏正在加载状态。
$(this).datagrid("loaded");
}
在数据加载成功之后隐藏正在加载状态
四 点击下一页进行查询
//点击下一页
$('#dg').datagrid('getPager').pagination({
//刷新按钮执行的操作
onBeforeRefresh: function() {},
onSelectPage: function(pageNumber, pageSize) {
$("#dg").datagrid('loading'); //显示加载信息
$.ajax({
type: "get",
url: url,
dataType: 'jsonp',
data: "pageNum=" + pageNumber + "&pageSize=" + pageSize ,
success: function(data) {
if(data.code == 0) {
//数据返回成功后填充到表格中
var arr = data.result.content;
$("#dg").datagrid('loadData', { total: data.result.page.totalRecord, rows: arr })
}
},
error: function() {
error.apply(this, arguments);
}
})
}
});