如何只导出可见数据?

时间:2013-09-02 12:19:23

标签: jqgrid export

我使用此方法导出数据:

$('#list').jqGrid('getRowData')

但是现在我希望getRowData只返回可见列中的数据。

我这样隐藏我的列:

$("#list").jqGrid('hideCol',columnName)

jqGrid是否支持开箱即用?或者我需要构建自定义的东西吗?

1 个答案:

答案 0 :(得分:2)

方法getRowData无法仅导出可见数据。因此,如果您需要获取数据,我可以建议您采用两种实现方式:

  1. 您可以使用getRowData获取所有数据,然后从结果数据的每一项中删除不需要的属性。调用$('#list').jqGrid('getGridParam', 'colModel')可以获得网格的列数组。 colModel数组的每个项都包含hidden属性。如果hidden属性为true,则相应的列不可见,您可以从name返回的所有数组项中删除该项的getRowData属性。
  2. 您可以定义自己的getRowData修改,只导出可见数据。为此,您需要复制getRowData的源代码(请参阅here),从
  3. 修改the line
    if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn') {
    

    if ( nm !== 'cb' && nm !== 'subgrid' && nm !== 'rn' && !$t.p.colModel[i].hidden) {
    

    结果方法将满足您的需求。

    我在the answer中描述了如何向jqGrid添加新方法。所以你的代码可以是

    $.jgrid.extend({
        getVisibleRowData: function(rowid) {
            // here can be the copy of the code of getRowData 
            // starting with the line
            //    var res = {}, resall, getall=false, len, j=0;
            // see https://github.com/tonytomov/jqGrid/blob/v4.5.2/js/grid.base.js#L3027-L3061
            // you need just make the described above
            // modification of one line of the code
        }
    });
    

    您可以按名称使用新方法:$('#list').jqGrid('getVisibleRowData')