グリッドデータを読み込む関数を呼び出すと、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. ライブラリプロジェクトにある場合、Androidサービスは起動しません
- 3. WinFormにフルドッキングリストボックスが1つしかない場合、MouseLeaveは起動しません。
- 4. 他のタイマーイベントがハングした場合、ScheduledThreadPoolExecutorタイマーは起動しません。
- 5. 私のjavascript関数は一度しか起動しません
- 6. バインド名がGetType()やToString()などの場合、TryInvokeMemberは起動しません。
- 7. .getJSON()関数内のコードは起動しません
- 8. JavaScript関数はcodepenで起動しますが、JSFiddleでは起動しません。どうして?
- 9. hdfsデータノードは、しばらくの間ダウンした後に再起動した場合、再起動しません。
- 10. DAOがステートレスでない場合、GlassfishはEntityManagerを起動しません。
- 11. WEB-INF/classesディレクトリが存在する場合、Tomcatサーバーは起動しません。
- 12. 照会パラメーターが変更された場合、リアクタールータ - render()は起動しません
- 13. 小数点がデータに含まれている場合、Jquery append関数は機能しません
- 14. 画像がデータの場合はクロッパーが機能しません
- 15. jQueryのデータ型 - 未知の型エラー:a.charAtは関数ではありません
- 16. setTimeoutは関数を起動しません
- 17. 関数onEditはGoogleシートアドオンで起動しません
- 18. FB.getLoginStatusはコールバック関数を起動しません
- 19. シングルページアプリケーションの場合、$ controllerは関数エラーではありません
- 20. TypeError:undefinedは関数ではありません(JQuery Sortablesの場合)
- 21. ノードのアップグレードは、私の場合には動作しません。
- 22. チェックボックスがオフの場合、asp:checkboxのOnCheckedChangedイベントハンドラが起動しません。
- 23. TypeclassにPropがある場合、Coqはtypeclass関数を計算しません。
- 24. Azure関数 - ビジュアルスタジオが起動しません
- 25. Jquery関数が起動しません - onunload
- 26. PHPトリムは、私の場合には動作しません
- 27. フェイサーバーが起動または起動していません
- 28. メモ帳++関数リスト関数名がreserverd wordsで始まる場合、PHPが動作しません。
- 29. 多型関数で型推論が起こっていません
- 30. Delphi 2007は起動しません:型初期化例外
99%のケースでは、関数としての 'datatype'の使用は必要ありません。あなたは使用しているソースコードを含めることができますか? – Oleg