【问题标题】:Pagination in jqgridjqgrid中的分页
【发布时间】:2015-10-05 23:14:20
【问题描述】:

下午好,我直接为拼写而不是识字道歉,我英语很差。 以下问题 - 我无法在 jqgrid 中浏览页面,一般应该这样:

onPaging : function(pgButton)
{
     var nextPg = $("#users").getGridParam("page");
     $("#editGrid").trigger("reloadGrid",[{page:nextPg}]);
}

在我看来,这或锁定代码或这还不够。提示什么问题?

代码:

        sortname: 'id',
        sortorder: "desc",
        height: '100%',
        gridview: true,
        viewrecords: true,
        rowNum: 100,         
        rowList: [100, 500, 1000],
        autoencode: true,
        loadonce:true, 
        pager: '#pager', 
        search:true,
        multiselect: true,
        autowidth: true, 
        onPaging : function(pgButton){

         var nextPg = $("#users").getGridParam("page");
         $("#editGrid").trigger("reloadGrid",[{page:nextPg}]);
        },

我写了分页,但是代码很大,希望用更方便更小的代码替换它。

【问题讨论】:

    标签: jquery jqgrid pagination


    【解决方案1】:

    如果您使用loadonce:true 选项,那么服务器应该返回所有数据,而不是只返回一页的数据。如果您需要显示的行数不多(例如少于 1000 行),则使用 loadonce:true 选项非常实用。因此,您应该删除 loadonce:true 修改服务器代码以立即返回所有页面的选项。

    如果你真的有一些复杂的场景,你需要使用loadonce:true,但是要实现服务器端的分页,那么你应该在onPaging里面设置datatype到"local"。你不应该直接在onPaging 内部调用reloadGrid。 jqGrid 自己做。

    【讨论】:

    • 是的,我尝试清理“loadonce:true”,但随后分页 > 变为非活动状态,或者它们可以在没有“loadonce:true”的情况下激活?在我理解的 onPaging 中,有必要这样写: var nextPg = $ ("#users") .getGridParam ("page"); $ ("#users") .setGridParam ({ rowNum: nextPg });
    • @Casper:抱歉,我无法关注你。 你有重现问题的演示吗? 有多少行在第一次加载数据时返回服务器?是您拥有的所有行吗?您使用rowNum: 100,但很明显不能一次在屏幕上显示 100 行。因此,用户必须使用滚动查看前 100 行并使用分页查看接下来的 100 行。我觉得不是结果。您应该不要在onPaging 内部更改rowNum。我写道,您可以将datatype 设置为"json",因为使用loadonce:true,它将更改为"local"。
    • 我明白了,无论如何返回 json 所有数据,而不仅仅是前 100 个,即使没有“loadonce:true”也是一个问题。工作代码是,但它是公司的,您需要在那里创建入口帐户。感谢您的帮助,我会认为它更正。
    【解决方案2】:

    顺便说一句,它对谁很有趣(我不知道有多少是最佳的),我是这样制作的: 在js中

    onPaging : function(pgButton){
                var gridParamRowNum = $('#users').getGridParam('rowNum');
                var gridParamRowAll = $('#users').getGridParam('records');
                var gridParamPage = $('#users').getGridParam('page');
                if(pgButton === 'next_pager') 
                {
                    gridParamPage = gridParamPage + 1;
                }else
                {
                    gridParamPage = gridParamPage - 1;
                    gridParamRowAll = gridParamRowAll + 100;
                }
                    AdminUsers.ajaxParams.gridParamPage = gridParamRowNum * gridParamPage - 100;
                    AdminUsers.ajaxParams.gridParamRowNum = gridParamRowAll;
            },
    

    其中 AdminUsers.ajaxParams.gridParamPage 和 AdminUsers.ajaxParams.gridParamRowNum 是对服务器的 POST 请求,

    对于 php:

    if ( isset($_REQUEST['gridParamPage']) && isset($_REQUEST['gridParamRowNum'])) {
            $limit = $_REQUEST['gridParamRowNum'];
            $offset = $_REQUEST['gridParamPage'];
            $usersFactory->setLimit((int)$limit)->setOffset((int)$offset);
        }
    

    通过 setLimit 和 setOffset 函数,查询出来并发送到客户端

    【讨论】:

      猜你喜欢
      • 2020-10-06
      • 2012-05-13
      • 2011-04-17
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 2012-01-18
      相关资源
      最近更新 更多