从 jqgrid 将过滤后的数据导出到 CSV

Export filtered data to CSV from jqgrid

我正在使用免费的 jqgrid 4.14,我需要将网格的数据导出到 CSV/Excel。我已经制作了一个将所有数据导出到 CSV 的函数。 我正在捕获来自服务器的数据并使用该数据形成 CSV。但这里的问题是我将如何只从网格中获取过滤后的数据。是否有任何默认 属性 或函数?

这是我的功能-

  function convertor (gridData, scopes, ShowLabel, fileTitle,grid_header_column_value,id) {


        scopes.grid_header_columns = scopes.grid_header_column_value[id];
        var bg = "<button class='btnfilter' />";
        for (var i = 0; i < scopes.grid_hidden_columns[id].length; i++) {
            if (includes(scopes.grid_header_columns,scopes.grid_hidden_columns[id][i]) == true) {
                var indexhed = scopes.grid_header_columns.indexOf(scopes.grid_hidden_columns[id][i]);
                scopes.grid_header_columns.splice(indexhed, 1);
            }
        }
        var arrData = typeof gridData != 'object' ? JSON.parse(gridData) : gridData;
        var CSV = '';
        if (ShowLabel) {
            var row = "";
            var count = 0;
            if (fileTitle != "" )
            {
                var htmltext = fileTitle.split(',');
                for (var jj = 0; jj < htmltext.length; jj++)
                {
                    var datacont = document.getElementById(htmltext[jj]);
                    if (datacont == undefined)
                        datacont = '';
                    else
                        datacont = datacont.textContent + '\r\n';
                    CSV += datacont;
                }
            }
            for (var index in arrData[0]) {
                var a = scopes.gridextra.indexOf(index);
                if (a == -1 && scopes.grid_header_columns[count] != undefined) {
                    row += scopes.grid_header_columns[count].replace(bg, "") + ',';
                    count++;
                }
            }
            row = row.slice(0, -1);
            CSV += row + '\r\n';
        }

        for (var i = 0; i < arrData.length; i++) {

            var row = "";
            for (var index in arrData[i]) {

                var a = scopes.gridextra.indexOf(index);

                if (a == -1) {
                    if (isNaN(arrData[i][index]) == false) {
                            if(arrData[i][index]<0) {
                                if(arrData[i][index] == -2)
                                    arrValue = '="'+"*"+'"';
                                else
                                    arrValue = '="'+"N/A"+'"';
                            }
                            else
                                var arrValue = arrData[i][index] == null ? "" : '="' + arrData[i][index] + '"';
                    }
                    else
                            var arrValue = arrData[i][index] == null ? "" : '="' + arrData[i][index] + '"';
                        row += arrValue + ',';
                }
            }
            row.slice(0, row.length - 1);
            CSV += row + '\r\n';
        }
        if (CSV == '') {
            growl.error("Invalid data");
            return;
        }
        csvData = CSV;       
    }

如果我正确理解你的问题,那么你应该使用 lastSelectedData 参数而不是 data 参数。 data 参数包含原始数据。 lastSelectedData 参数包含 过滤和排序的 数据(所有页面)。查看我为 the answer.

创建的演示