jqGrid 设置记录数

jqGrid set records count

我有一个指向外部 API 的 jqGrid,我无法控制它。这个外部 API 有两个端点:

基于用户输入,jqGrid 过滤器被转换为适当的查询字符串以过滤外部 API 的 DataCount端点。

我有 jqGrids url 是根据用户输入动态构建的,目标是 Data 端点...在 loadBeforeSend() 事件期间它调用Count 端点根据用户过滤器获取最新的分页信息。

我正在使用 jsonreader 功能:

jsonReader: {
                    root: 'products',
                    id: 'id',
                    records: function () {

                        return gridTotal;
                    },
                    total: function () {
                        // var totalPages = (gridTotal + reqOptions.limit-1) / reqOptions.limit;
                        var totalPages = Math.ceil(gridTotal / reqOptions.limit);
                        console.log('totalPages: ' + totalPages);
                        return totalPages;
                    },
                    page: function () {
                        //var totalPages = Math.ceil(gridTotal/20);
                        console.log('currentPage: ' + reqOptions.page);
                        return reqOptions.page;
                    }
                },

loadBeforeSend 方法示例:

loadBeforeSend: function (xhr, settings) {
    settings.url = _newUrl || endpointURL;

    // Lets fetch our data count...this may change as items get published so lets fetch during load
    products.count(accessToken, _filterQuery)
        .success(function (resp) {
            // This is the total number of products that match our current search
            gridTotal = resp.count;
        }).catch(function (err) {
            console.error(err);
        });
}

Data 端点获取非常有效,问题是如何调用 Count 端点并更新分页数据。

尝试了以下方法:

有没有办法


已更新以显示@Oleg 解决方案

    loadBeforeSend: function (xhr, settings) {
        settings.url = _newUrl || endpointURL;

        // Lets fetch our data count...this may change as items get published so lets fetch during load
        products.count(accessToken, _filterQuery)
            .success(function (resp) {
                // This is the total number of products that match our current search
                gridTotal = resp.count;
gridTotal = resp.count;
                            grid.jqGrid('setGridParam', {
                                page: gridOpts.jsonReader.page(),
                                records: gridTotal,
                                lastpage: gridOpts.jsonReader.total()
                            });
                            grid[0].updatepager(false, true);
            }).catch(function (err) {
                console.error(err);
            });
    }

希望我正确理解了你的问题。在这种情况下,您可以先从 Data 端点加载主要数据。然后(在 loadComplete 内)您可以手动启动 new $.ajax 请求以从 Count 端点获取数据并更新 $.ajax.

success 回调中的分页数据

更新寻呼机需要做的是:

  1. 根据从 Count 端点返回的数据设置 jqGrid 的 pagerecordslastpage 参数。
  2. 调用 $("#grid")[0].updatepager(false, true); 将使用上述选项并刷新寻呼机上的信息。

您可以在 the old answer.updatepager(false, true) 的用法示例中看到。