申し訳ありませんが、「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
関数は本当に必要なく、代わりに and を使用できると思いgetGridParam
ますsetGridParam
。
オプションの値を変更するcVal
には、上記の方法で定義されている場合に使用できます
$('#some-selector').jqGrid('setGridParam', {cVal: true});
または単に使用する
$('#some-selector')[0].p.cVal = true;
または、 jQuery.dataを使用して、 に関連付けられたデータを保存することもできます$('#some-selector')
。
$.jgrid.extend
フォームで呼び出す必要がある新しいメソッドが必要な場合に役立ちます$('#some-selector').jqGrid('cSetVal',value);
。回答では、そのような実装の例を示し、アプローチの利点と欠点について少し説明します。
UPDATED : したがって、次のような構文を本当に$('#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
);
UPDATED 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