EasyUI datagrid分页查询

发布于 2012-09-28  55.5k 次阅读


var p = $('#mainTable').datagrid('getPager');
        if (p){
            $(p).pagination({
                onSelectPage:function(pageNumber, pageSize){
                    param = $.extend(param,{page:pageNumber,rows:pageSize});//这步需要把分页参数传给后台做分页查询
                    $(this).pagination('loading');
                    loadData(param);//重载数据将datagrid填充。
                    $(this).pagination('loaded');
                },
                onBeforeRefresh:function(pageNumber,pageSize){
                    $(this).pagination('loading');
                    //progress bar
                },
                onRefresh:function(){
                    $(this).pagination('loaded');
                }
            });
        }

easyUI 的前端分页还是挺完善的,话说只要用一句话就可以搞定。

下面是datagrid方式的分页。先把数据加载到datagrid。。。

$.getJSON(url,function(data){
        var _peConfig = data.peIDConfig;
        var _fzConfig = data.peFZConfig;
        $("#mainTable").datagrid({
            iconCls:'icon-save',
            nowrap: false,
            striped: true,
            collapsible:true,
            pageSize: 10,//每页显示的记录条数,默认为10 
            pageList: [5,10,20],//可以设置每页记录条数的列表 
//          url:param.action+'?id='+param.id+'&t='+Math.random(),
            onDblClickRow:function(rowIndex, rowData){
//              var callback = eval(param.dbClick);
//              if(callback)
//              callback(rowData[_peConfig.idField]);   //添加双击事件,修改行,传入主键
                relatedData(param.action,rowData[_peConfig.idField]);       //显示详细信息,传入主键
            },
            onLoadSuccess:function(data){
//              var _parentDiv = $('.pagination-btn-separator').parent().parent().parent;
//              alert(_parentDiv.html())
//              _parentDiv.append("<td><input id=pagerSearch class='mini-textbox-input' searcher='123' prompt='请输入查询值' style='width:200px' /></td>");
//              alert(_parentDiv.parents().find("tr").html())
//              _parentDiv.parents().find("tr").append("<td><input id=pagerSearch class='mini-textbox-input' searcher='123' prompt='请输入查询值' style='width:200px' /></td>");
//              _parentDiv.parents().find("tr").append("<td><div class='pagination-btn-separator'></div></td><td>"+htm+"</td>");
            },
            loadMsg:"正在载入...",
            sortName: _peConfig.sortName,
            sortOrder: _peConfig.sortOrder,
            height:"300",
            width:"auto",
            remoteSort: false,
            idField:_peConfig.idField,
            frozenColumns:[[
                        {field:'ck',checkbox:_peConfig.checkable},
                        {title:_peConfig.title,field:_peConfig.field,hidden:true,width:"0",sortable:_peConfig.sortable},
                        {title:_fzConfig.title,field:_fzConfig.field,width:_fzConfig.width,sortable:_fzConfig.sortable}
            ]],
            columns:[[
            ]],
            pagination:true,
            rownumbers:true
        });

 

 

然后填充模版上的一写内容...

datagrid在分页按钮上自动绑定了事件,当点击下一页会触发onSelectPage函数,这时就可以对数据分页进行操作了~

var p = $('#mainTable').datagrid('getPager');
        if (p){
            $(p).pagination({
                onSelectPage:function(pageNumber, pageSize){
                    param = $.extend(param,{page:pageNumber,rows:pageSize});//
                    $(this).pagination('loading');
                    loadData(param);//充载
                    $(this).pagination('loaded');
                },
                onBeforeRefresh:function(pageNumber,pageSize){
                    $(this).pagination('loading');
                    //progress bar
                },
                onRefresh:function(){
                    $(this).pagination('loaded');
                }
            });
        }

这时会对datagrid的属性做重载,界面上的数据都会被刷新掉,那当前页,每页条数都会被刷新。这时就需要下面

$("#mainTable").datagrid('getPager').pagination({pageSize:param.rows,pageNumber:param.page});//分页关键

这样就OK。

 

分页完成,后台需要接收当前页和每页条数作为分页查询条件,后台上的一些分页逻辑和语句就不贴出来了。