jqGrid('getGridParam','colNames')奇怪的行为

时间:2014-08-28 21:59:23

标签: javascript jquery jqgrid

使用此函数返回网格的列名称可以正常工作。拼接它返回的数组时会出现问题。

网格包含一个复选框作为第一列,因此我想从数组中删除它。这是代码。

var columnTitles = $(table).getGridParam('colNames'); 
columnTitles.splice(0,1);

当我多次使用此功能(它导出为ex​​cel)时出现问题。下次导出时,getGridParam函数实际上返回拼接的列名数组而不是实际的列名。它好像是通过引用或其他东西传递的。

进一步证明它正在这样做,我不会遇到全局变量或其他问题...如果我执行以下代码:

var columnTitles = $(table).getGridParam('colNames'); 
var columnTitles2 = $(table).getGridParam('colNames'); 
columnTitles.splice(0,1); 
console.log(columnTitles2); 

columnTitles2的值作为拼接数组返回。这可能是完全愚蠢的事情,但我在这里错过了什么?

1 个答案:

答案 0 :(得分:1)

方法getGridParam返回 jqGrid使用的内部参数的参考。如果您使用数组或对象,例如colNamescolNames,则应该小心。你需要为你的目的修改数组 ,但你不想更改jqGrid中的值,你应该首先复制数组,然后修改副本:

var columnTitles = $(table).jqGrid("getGridParam", "colNames").slice(); 
columnTitles.splice(0,1);

我使用slice制作了jqGrid使用的内部colNames的副本。