関数のコードには、少なくとも2つの重要な問題がありabc
ます。
1つ目は、グリッドを作成するsetGridParam
前の使用法です。 では使用できません。likeの呼び出しは、グリッドを表示するために使用されるダイブとテーブルの比較的複雑な構造で空の要素を変換します。したがって、最初にグリッドを作成し(グリッドに対して秘密を空にする)、その後でのみ、またはグリッドコンテンツを更新することができます。JQuery("#table2").jqGrid({...});
setGridParam
<table>
JQuery("#table2").jqGrid({...});
<table id="table2"></table>
<table>
setGridParam
.trigger("reloadGrid")
2番目の問題は、複数回呼び出すJQuery("#table2").jqGrid({...});
関数内の使用法です。前に説明したように、呼び出しはグリッドに空になります。したがって、そのような呼び出しを行うことができるのは1回だけです。グリッドの2回目のロードでは、とを使用してグリッドコンテンツを更新する必要があります。abc
JQuery("#table2").jqGrid({...});
<table>
setGridParam
.trigger("reloadGrid")
更新:マスター/詳細シナリオを実装する場合は、次のように実行できます。
// create master grid
$("#table1").jqGrid({
datatype: "json",
url: "masterGridUrl",
onSelectRow: function (rowid, state) {
if (state) { // if not the same row was previously selected
// refresh detail grid
$("#table2").jqGrid("setGridParam", { datatype: "json"})
.trigger("reloadGrid", [{page: 1}]);
}
},
... // another options
});
// create details grid without filling the data initially
$("#table2").jqGrid({
datatype: "json", // we use "local" instead of "json" to have to request to the server
url: "JGridA",
postData: {
action: "abc",
hidden: function () {
// id of currently selected row
return $("#table1").jqGrid("getGridParam", "selrow");
}
},
... // other options
});
マスターグリッド「#table1」と空の詳細グリッド「#table2」が作成されます。マスターグリッドで行を選択すると、詳細グリッドの本体が再ロードされます。詳細グリッドは、2つの追加パラメーターをサーバーに送信します。1つは静的パラメーターaction=abc
で、もう1つhidden
はマスターグリッドのROWIDであるパラメーターです。
navGrid
マスターグリッドで使用する場合は、beforeRefresh
コールバックを追加できます(コード例の回答を参照してください)。マスターグリッドのbeforeRefresh
コールバックでclearGridData
、詳細グリッドを呼び出すことができます。したがって、マスターグリッドを更新すると、マスターグリッドの行が選択されるまで、詳細グリッドは空になります。