フォームに複数の jqGrid があります。私のフォームの複数のjqGridの場合、jqGrid定義の内容を持つjsファイルを含めることでそれを達成しています。そのjsファイルの内容は次のとおりです。
var MyGridData = MyGridData || (function () {
var _args = {};
return {
init: function (Args){
_args = Args;
},
initiateGrid: function (){
this.fillGridSchema(_args[6]);
},
fillGridSchema: function (){
$('#' + _args[0]).jqGrid({
url: _args[1],
datatype: "json",
mtype: "POST",
ajaxGridOptions: {contentType: 'application/json; charset=utf-8' },
serializeGridData: function(postdata){
return JSON.stringify(postdata);
},
postData: {colOrder: _args[2], data: _args[3]},
search: true,
colNames: _args[4],
colModel: _args[5],
viewrecords: true,
pager: jQuery('#pager_' + _args[7]),
rowNum: 10,
rowList: [10, 20, 30, 40],
//further required jqGrid properties here for ex: sortorder, //loadonce, gridview, ignorecase, etc.
onSelectRow: function (rowId) {
if(_args[8] != ''){
var rowData = jQuery(this).getRowData(rowId);
var fn = window[_args[4]];
if(typeof fn === 'function'){
fn(rowData);
}
}
}
});
}
}
}
jqGrid を生成するために、次のコードが呼び出されます。
MyGridData.init([
'GridName1', 'griddataurl', 'colOrder', 'postDataargs', 'colNames', 'colModel', 'ExtraParams', 'pager', 'onSelectRowfunction'
]);
MyGridData.initiateGrid();
今私が直面している問題は、1 番目のグリッドの行選択で 2 番目のグリッドを埋めていて、プログラムでグリッドの最初の行をデフォルトで選択していることです。したがって、1 番目のグリッドの最初の行が選択されている場合、1 番目のグリッドの onSelectRow で関数を呼び出して、その関数の最初のグリッドでの選択に従って 2 番目のグリッドを埋めます。しかし問題は、_args 引数が、最初のグリッドが初めて呼び出されたときに、最初のグリッドの引数を表示することです。2 回目に最初のグリッドの onSelectRow が呼び出されると、1 番目のグリッドの引数ではなく、2 番目のグリッド引数の値を持つ _args 引数が表示されます。私はそれで問題を見つけることができません。誰かが問題を見つけることができる場合は、これに対する解決策を教えてください。