この質問は、私が thisOleg の回答とその中のデモグリッドを調べた後に始まりました。
gridComplete
:
これは、すべてのデータがグリッドに読み込まれ、他のすべてのプロセスが完了した後に発生します。また、イベントは、データ型パラメーターとは独立して、ページングなどをソートした後に発生します。
loadComplete
:
このイベントは、すべてのサーバー要求の直後に実行されます。 datatypeグリッドパラメーターに応じた応答からのデータ
そのドキュメントから、gridComplete
はグリッドの描画の最後に発生し、loadComplete
はjqGridがバックエンドとの通信を完了した後に発生することを理解しました。
そして、私は不思議に思う-なぜデモでは、loadComplete
はgridComplete
ではなく、セルの色の変更に使用されたのか?
JqGridのソースを見る (source) gridCompleteがgrid.baseの1行だけで呼び出されていることがわかります。
1725: if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);}
この行は関数updatePager
からのものです。
loadComplete
はpopulate
関数にあります(1757行目)。 gridComplete
とは異なり、追加のパラメーターが渡されます。どちらのコールバックもthis
への参照を受け取りますが、loadComplete
はサーバーから返された(またはローカルに渡された)データも受け取ります。
1858: case "xmlstring":
if(lcf) {ts.p.loadComplete.call(ts,dstr);}
1869: case "jsonstring":
if(lcf) {ts.p.loadComplete.call(ts,dstr);}
1881:
case "local":
case "clientside":
if(lc) { lc.call(ts,req); }
問題は、関数populate
とupdatePager
がタンデムで発生することが多いため、並べ替えとページングを行うと、両方のコールバックが呼び出されることがわかります。違いは、loadComplete
に追加のパラメーターが渡されることです。
まだ気付いていない微妙な違いがあると思います...一方が呼び出され、もう一方が呼び出されない場合があるかもしれませんが、ソートとページングの両方で呼び出されることに気づきました。