グリッドデータを読み込む関数を呼び出すと、loadCompleteは起動しません。このイベントを処理する必要があるので、手動で複数選択チェックボックスを正しく更新することができます。 gridCompleteで更新する場合は、チェックボックスを2回クリックしてチェックを外す必要があります。JQGrid:loadCompleteは、データ型が関数の場合には起動しません。
答えて
以前の質問では、サーバー側でWCFを使用すると書いていました。 の場合、としてdatatype
を使用する必要はありません。 JSON.stringify
はあなたがhereから読み込むことができますjson2.js
を含める必要があり、古いWebブラウザでサポートされていることを確認するために
datatype: "json",
ajaxGridOptions: { contentType: "application/json" },
serializeGridData: function (data) {
return JSON.stringify(data);
}
:その代わりに、あなただけの次のパラメータを使用することができます。
the old answerには、jqGridでWCFを使用する方法を示すコードサンプル(およびデモをダウンロード)があります。
ここで、datatype
を機能として使用すると、元の質問に「なぜloadComplete
が発生しないのですか」と答えるようになります。短い答えは:datatype
を機能として使用する場合コードはloadComplete
の呼び出しに責任があります。
datatype
を関数として使用している場合は、コードがjqGridが通常行ういくつかのことに責任があります。だから最初のすべてあなたはdatatype
関数は何を理解する必要がありますを行う必要があります。ドキュメントの例(hereを参照)は、機能としてdatatype
の最も単純な、しかし完全ではない実装を示しています。より完全なコード例は、次のようになります。
$("#list").jqGrid({
url: "example.php",
mtype: "GET",
datatype: function (postdata, loadDivSelector) {
var ts = this, // cache 'this' to use later in the complete callback
p = this.p; // cache the grid parameters
$.ajax({
url: p.url,
type: p.mtype,
dataType: "json",
contentType: "application/json",
data: JSON.stringify(postdata),
cache: p.mtype.toUpperCase() !== "GET",
beforeSend: function (jqXHR) {
// show the loading div
$($.jgrid.jqID(loadDivSelector)).show();
// if loadBeforeSend defined in the jqGrid call it
if ($.isFunction(p.loadBeforeSend)) {
p.loadBeforeSend.call(ts, jqXHR);
}
},
complete: function() {
// hide the loading div
$($.jgrid.jqID(loadDivSelector)).hide();
},
success: function (data, textStatus, jqXHR) {
ts.addJSONData(data);
// call loadComplete
if ($.isFunction(p.loadComplete)) {
p.loadComplete.call(ts, data);
}
// change datatype to "local" to support
// "loadonce: true" or "treeGrid: true" parameters
if (p.loadonce || p.treeGrid) {
p.datatype = "local";
}
},
error: function (jqXHR, textStatus, errorThrown) {
if ($.isFunction(p.loadError)) {
p.loadError.call(ts, jqXHR, textStatus, errorThrown);
}
});
},
... // other parameters
});
コードはそれほど短くないことがわかります。上記の例では、仮想スクロール(scroll: 1
またはscroll: true
)のようないくつかのjqGridオプションはサポートしていません。
それでも私は今すぐクリアしましたなぜdatatype
を機能として使用することはお勧めしません。あなたがそれを使用する場合、多くのことを理解しなければならないjqGridが内部的にどのように働くか。すべてのことを正しく行うために、ソースコードを調べる必要があります。何かをスキップすると、いくつかの状況やjqGridパラメータの組み合わせによってコードが正しく動作しません。
回答の冒頭に含まれているコード(ajaxGridOptions
とserializeGridData
の使用)を見ると、コードが非常に簡単であることがわかります。さらに、は、jqGridパラメータの他のすべての正当な組み合わせで動作します。たとえば、loadonce: true
、loadComplete
、loadError
、または仮想スクロール(scroll: 1
またはscroll: true
)を使用できます。必要なものは、すべてdojqGrid doに依存します。
- 1. ListViewにデータがない場合、OnScrollListenerのonScrollは起動できません。
- 2. WinFormにフルドッキングリストボックスが1つしかない場合、MouseLeaveは起動しません。
- 3. .getJSON()関数内のコードは起動しません
- 4. バインド名がGetType()やToString()などの場合、TryInvokeMemberは起動しません。
- 5. DAOがステートレスでない場合、GlassfishはEntityManagerを起動しません。
- 6. FB.getLoginStatusはコールバック関数を起動しません
- 7. setTimeoutは関数を起動しません
- 8. チェックボックスがオフの場合、asp:checkboxのOnCheckedChangedイベントハンドラが起動しません。
- 9. PHPトリムは、私の場合には動作しません
- 10. フェイサーバーが起動または起動していません
- 11. Delphi 2007は起動しません:型初期化例外
- 12. 引数がnullの場合、RawQueryは機能しません
- 13. 関数から呼び出された場合、関数は同じ動作をしません
- 14. データの場合はForm_validationが実行されていません
- 15. 動的ボタンコマンドイベントは起動しません
- 16. Javaでは、ヌルポインタが起きた場合はほとんどありません。
- 17. 電話が起きるまで、onNewIntent()は起動しません。
- 18. 私のjQuery ajax成功関数のヘルプは起動しません
- 19. onClick関数が動作しません
- 20. user_authenticate()関数が動作しません
- 21. エンティティフレームワークのトリガは起動しません。
- 22. JQueryのライトボックスは起動しません
- 23. LINQは浮動小数点型のグループを合計しませんか?プロパティ
- 24. FBログインコールバック関数は、ユーザーが既にログインしている場合には応答しません。
- 25. Netty HashedWheelTimerはCPU負荷が高い場合には動作しません。
- 26. Jettyは事前統合テストフェーズ(Maven)で起動しません
- 27. SIGNAL emitはある関数でのみ動作しますが、他の関数では動作しません。
- 28. 関数ポインタはC++のインスタンス型をサポートしていません
- 29. Androidの場所再起動後に無線LANが動作しません
- 30. WPFアプリが応答しない場合は、自動再起動
99%のケースでは、関数としての 'datatype'の使用は必要ありません。あなたは使用しているソースコードを含めることができますか? – Oleg