2

我使用这种方法来导出我的数据:

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

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

我像这样隐藏我的列:

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

jqGrid 是否支持这个开箱即用?或者我需要建立一些定制的东西吗?

4

1 回答 1

2

该方法getRowData没有仅导出可见数据的选项。因此,如果您需要数据,我可以建议您两种实现方式:

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

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

生成的方法将满足您的需要。

我在答案中描述了如何向 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').

于 2013-09-02T13:49:13.357 回答