1つのページで2つのjqgridを使用しています。私が使用した2番目のグリッドloadonce: true
2番目のグリッドで列を並べ替える必要があるため。サーバーのポストバック後に両方のグリッドをリロードする必要があります。 (2番目のグリッドに更新された値を表示する必要があります)。最初のグリッドはloadonce
属性を使用しないため、正常に再読み込みされます。私の質問は、loadonce
属性とreloadGrid
を一緒に使用できるかどうかです。 (グリッドにloadonce
属性を動的に設定することにより)または、この場合、サーバー側の並べ替えを行う必要がありますか?アドバイスをお願いします。前もって感謝します。
loadonce:true
jqGridを使用する場合、グリッドからデータを最初にロードした後、datatype
パラメーターを「ローカル」に変更します。次のグリッドの再読み込み(並べ替え、ページング、フィルタリング)はすべてローカルで機能します。サーバーからグリッドデータをもう一度更新する場合は、datatype
を元の値( 'json'または 'xml')に設定する必要があります。例えば:
$("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
更新:無料のjqGrid は、最初のリリース以降、reloadGrid
のfromServer: true
オプションをサポートしていますバージョン4.8)。したがって、次のようなコードを使用できます
$("#list").trigger("reloadGrid", { fromServer: true, page: 1 });
上記と同じことを行います。主な利点:このようなコードは、datatype
("json"
、"jsonp"
、"xml"
など)の初期値で問題なく機能します。無料のjqGridは、datatype
の元の値を内部dataTypeOrg
内に保存してから、"local"
に変更します。
無料のjqGridのもう1つの便利なオプションは、reloadGridOptions
のデフォルトのオプションを指定できるnavGrid
のパラメーターreloadGrid
です。したがって、たとえば、
loadonce: true,
navOptions: { reloadGridOptions: { fromServer: true } }
navGrid
のデフォルトを追加設定するjqGridのオプション。その結果、ナビゲーターバーの[再読み込み]ボタンをクリックすると、ローカルの再読み込みではなく、サーバーからグリッドが再読み込みされます。
$("#shoppingCatalog").jqGrid('GridUnload');
構造が削除され、コードは次のサーバーコールバックからのデータでグリッドを再構築できます。
ただ、私にとっては、次の行ではloadonce:true
jqGridのデータを更新するには不十分でした。
$("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
その行を呼び出した後、JSONデータを読み込んでjqGrid
に入力するコードを呼び出そうとしましたが、グリッドの行が更新されませんでした。
私の解決策は、jqGridを強制的にunloadし、その後関数を呼び出すことでしたそれを再作成します。
$("#MikesGrid").jqGrid('GridUnload');
たぶん私は不運だったのかもしれません。
ところで、機会があれば、jqGridに2つのボタンを追加する汎用JavaScript関数の記述方法を記述します。1つは(loadonce)データを更新し、もう1つはjqGridデータを実際のExcelファイルにエクスポートします。 、私のライブラリを使用:
再利用可能なコードが好きです。
ニースは過去1週間試行しましたが、解決策は完璧な使用法です
jQuery("#datalist").jqGrid().setGridParam(
{
datatype:'xml',
page:1,
url : '<%=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype
}
).trigger("reloadGrid");
loadonce:false