jqGrid(’getGridParam’,’colNames’)奇怪的行为
使用此函数返回网格的列名称工作正常。 拼接它返回的数组时会出现问题。
网格包含一个复选框作为第一列,所以我想从数组中删除它。 这是代码。
var columnTitles = $(table).getGridParam('colNames'); columnTitles.splice(0,1);
当我多次使用此function(它导出到excel)时出现问题。 下次导出时,getGridParam函数实际返回拼接的列名数组,而不是实际的列名。 就好像它是通过引用或其他东西传递的。
进一步certificate它正在这样做,我不只是有一个全局变量或其他东西的问题……如果我执行以下代码:
var columnTitles = $(table).getGridParam('colNames'); var columnTitles2 = $(table).getGridParam('colNames'); columnTitles.splice(0,1); console.log(columnTitles2);
columnTitles2的值作为拼接数组返回。 这可能是完全愚蠢的事情,但我在这里错过了什么?
getGridParam
方法返回jqGrid使用的内部参数的引用。 例如,如果使用数组或对象, colNames
或colNames
,则应该小心。 你需要为你的目的修改数组,但你不想更改jqGrid中的值,你应该首先复制数组,然后修改副本:
var columnTitles = $(table).jqGrid("getGridParam", "colNames").slice(); columnTitles.splice(0,1);
我使用slice
来制作colNames
使用的内部colNames
的副本。