为什么“allData”是一个空数组?

时间:2017-09-19 17:39:50

标签: jqgrid free-jqgrid

我正在尝试从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。

能告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

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

然后,您可以轻松使用许多高级功能,例如createColumnIndex: truegenerateValue: truegenerateDatalist: true选项等。请参阅版本4.14.1的README中包含的演示。在我的选择中,良好和舒适的数据过滤是显示数据的部分。在本地拥有数据可以在过滤器栏中找到唯一值并构建<select>,或使用<datalist>来获得自动完成功能。