对不起,但我不完全理解“扩展 jqGrid”的目标。如果您需要使用 jqGrid 保存一些附加信息,您可以只使用不在标准 jqGrid 参数列表中的附加参数。例如,如果您要使用创建网格
$('#some-selector').jqGrid({
url: "someUrl",
datatype: "json",
... // other standard jqGrid parameters
cVal: false,
cSetVal: function(value) {
console.log('cSetVal');
}
);
您将能够使用$('#some-selector').jqGrid('getGridParam', 'cVal');
and $('#some-selector').jqGrid('getGridParam', 'cSetVal');
或仅使用$('#some-selector')[0].p.cVal
and访问参数$('#some-selector')[0].p.cSetVal
。我认为您实际上并不需要任何cSetVal
orcGetVal
功能,而是可以使用getGridParam
and setGridParam
。
要更改选项的值,cVal
如果它以 abave 方式定义,您可以使用
$('#some-selector').jqGrid('setGridParam', {cVal: true});
或者只是使用
$('#some-selector')[0].p.cVal = true;
或者,您可以使用jQuery.data存储与$('#some-selector')
.
$.jgrid.extend
如果您需要有需要在表单中调用的新方法,这将很有帮助$('#some-selector').jqGrid('cSetVal',value);
。答案显示了这种实现的示例,并讨论了该方法的一些优点和缺点。
更新:所以如果你真的需要使用这样的语法,$('#some-selector').jqGrid('cSetVal',value);
你应该修改你的代码
$.jgrid.extend({
cSetVal: function(value) {
console.log('Setting cVal');
$(this).jqGrid('setGridParam', {cVal: value});
return this;
},
cGetVal: function(value) {
console.log('Getting cVal');
return $(this).jqGrid('getGridParam', 'cVal');
}
});
如果您需要cVal
为网格初始化一些值,您只需cVal
在创建它的过程中将其包含在 jqGrid 的选项列表中:
$('#some-selector').jqGrid({
url: "someUrl",
datatype: "json",
... // other standard jqGrid parameters
cVal: true // HERE
);
更新2:如果您定义了我在回答的第一部分中建议的方法,则应按以下方式使用这些方法:
var $grid = $('#some-selector');
// create the grid
$grid.jqGrid({
url: "someUrl",
datatype: "json",
... // other standard jqGrid parameters
cVal: false,
cSetVal: function(value) {
console.log('in cSetVal()');
//this.p.cVal = value;
$(this).jqGrid('setGridParam', {cVal: value});
},
cGetVal: function() {
console.log('in cGetVal()');
//return this.p.cVal;
return $(this).jqGrid('getGridParam', 'cVal');
}
);
// now we can use cVal, cSetVal and cGetVal
var cSetVal = $grid.jqGrid("getGridParam", "cSetVal"),
cGetVal = $grid.jqGrid("getGridParam", "cGetVal"),
cVal = $grid.jqGrid("getGridParam", "cVal"); // get cVal value
cSetVal.call($grid[0], true); // change cVal value
cVal = $grid.jqGrid("getGridParam", "cVal");// get modified cVal value
cSetVal.call($grid[0], false);// change cVal value
cVal = cGetVal.call($grid[0]);// get modified cVal value