我使用这种方法来导出我的数据:
$('#list').jqGrid('getRowData')
但现在我希望 getRowData 只返回可见列中的数据。
我像这样隐藏我的列:
$("#list").jqGrid('hideCol',columnName)
jqGrid 是否支持这个开箱即用?或者我需要建立一些定制的东西吗?
该方法getRowData
没有仅导出可见数据的选项。因此,如果您需要数据,我可以建议您两种实现方式:
getRowData
,然后从每个结果数据项中删除不需要的属性。该调用$('#list').jqGrid('getGridParam', 'colModel')
为您提供网格的列数组。colModel
数组的每一项都包含hidden
属性。如果该hidden
属性是true
,则相应的列是不可见的,您可以name
从返回的数组的所有项目中删除该项目的属性getRowData
。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')
.