我使用此方法导出数据:
$('#list').jqGrid('getRowData')
但是现在我希望getRowData只返回可见列中的数据。
我这样隐藏我的列:
$("#list").jqGrid('hideCol',columnName)
jqGrid是否支持开箱即用?或者我需要构建自定义的东西吗?
答案 0 :(得分:2)
方法getRowData
无法仅导出可见数据。因此,如果您需要获取数据,我可以建议您采用两种实现方式:
getRowData
获取所有数据,然后从结果数据的每一项中删除不需要的属性。调用$('#list').jqGrid('getGridParam', 'colModel')
可以获得网格的列数组。 colModel
数组的每个项都包含hidden
属性。如果hidden
属性为true
,则相应的列不可见,您可以从name
返回的所有数组项中删除该项的getRowData
属性。getRowData
修改,只导出可见数据。为此,您需要复制getRowData
的源代码(请参阅here),从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')
。