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); } }) } });