web-dev-qa-db-ja.com

loadCompleteイベントとgridCompleteイベントの違いは何ですか?

この質問は、私が thisOleg の回答とその中のデモグリッドを調べた後に始まりました。

gridComplete

これは、すべてのデータがグリッドに読み込まれ、他のすべてのプロセスが完了した後に発生します。また、イベントは、データ型パラメーターとは独立して、ページングなどをソートした後に発生します。

loadComplete

このイベントは、すべてのサーバー要求の直後に実行されます。 datatypeグリッドパラメーターに応じた応答からのデータ

そのドキュメントから、gridCompleteはグリッドの描画の最後に発生し、loadCompleteはjqGridがバックエンドとの通信を完了した後に発生することを理解しました。

そして、私は不思議に思う-なぜデモでは、loadCompletegridCompleteではなく、セルの色の変更に使用されたのか?

15
Gill Bates

JqGridのソースを見る (source) gridCompleteがgrid.baseの1行だけで呼び出されていることがわかります。

1725: if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);}

この行は関数updatePagerからのものです。

loadCompletepopulate関数にあります(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); }

問題は、関数populateupdatePagerがタンデムで発生することが多いため、並べ替えとページングを行うと、両方のコールバックが呼び出されることがわかります。違いは、loadCompleteに追加のパラメーターが渡されることです。

まだ気付いていない微妙な違いがあると思います...一方が呼び出され、もう一方が呼び出されない場合があるかもしれませんが、ソートとページングの両方で呼び出されることに気づきました。

3
ktm5124