为什么 "allData" 是一个空数组?

Why "allData" is an empty array?

我正在尝试从 jqGrid(免费版本和最新版本)获取数据,假设我得到:

我是这样做的:

$(function () {
    var $order_logs = $('#order_logs');
    $order_logs.jqGrid({
        url: Routing.generate('api_order_logs'),
        datatype: "json",
        colModel: $colmodel.data('values'),
        width: 980,
        height: 300,
        pager: true,
        toppager: true,
        hoverrows: true,
        shrinkToFit: true,
        autowidth: true,
        rownumbers: true,
        viewrecords: true,
        rowList: [25, 50, 100],
        rownumWidth: 60,
        gridview: true,
        sortable: {
            options: {
                items: ">th:not(:has(#jqgh_order_logs_cb,#jqgh_order_logs_rn,#jqgh_order_logs_actions),:hidden)"
            }
        },
        jsonReader: {
            root: 'rows',
            page: 'page',
            total: 'total',
            records: 'records',
            cell: '',
            repeatitems: false
        },
        cmTemplate: {autoResizable: true, editable: true},
        autoResizing: {compact: true, resetWidthOrg: true},
        autoresizeOnLoad: true
    }).jqGrid('navGrid', {
        edit: false,
        add: false,
        del: false,
        search: false,
        refresh: true,
        refreshstate: "current",
        cloneToTop: true
    }).jqGrid('navButtonAdd', {
        caption: 'Export',
        title: 'Export',
        onClickButton: function () {
            var filteredData = $order_logs.jqGrid("getGridParam").lastSelectedData,
                allData = $order_logs.jqGrid('getGridParam', 'data');

            exportData(filteredData, allData);
        }
    });
});

function exportData(filteredData, allData) {
    if (filteredData.length === 0 || allData.length === 0) {
        alert('There is no data to export');
        return;
    }

    // Export only the filtered data
    if (filteredData.length > 0) {
        return;
    }

    // Export all the grid data
}

出于某种原因,allData 的值始终是一个空数组,我不确定,因为我使用的代码与每个人都在使用的代码相同,并且在 SO 的很多答案中找到。

更新:

当前网格包含六列和一组 60 条记录,每次总分页 20,但您可以将分页更改为 50 或 100。

谁能告诉我这是为什么?

我建议在小数据集的情况下使用 loadonce: true, forceClientSorting: true 选项:少于 1000 或 10000 行。它简化了服务器端代码,您可以使用免费 jqGrid 的全部功能。访问lastSelectedDatadata的问题将得到解决。

除此之外,您还可以轻松使用许多高级功能,例如 createColumnIndex: truegenerateValue: truegenerateDatalist: true 选项等。请参阅 4.14.1 版 README 中包含的演示。在我看来,良好且舒适的数据过滤是显示数据的部分。将数据放在本地允许查找唯一值并在过滤器栏中构建 <select> 或使用 <datalist> 具有自动完成功能。