ExtJS 3.0のEditorGridPanelからのXmlHttpRequestによる自動保存?
-
05-07-2019 - |
質問
ExtProxy 3.0にEditorGridPanelがあり、HttpProxyとJsonReaderを介して入力されています。編集可能な列「working」があります。
セルを編集した後、いくつかの基本パラメーター、行のIDフィールド、変更された列の名前、および新しい値を指定してXmlHttpRequestをサーバーに送信するにはどうすればよいですか?
リクエストが行われると、サーバー側の更新は簡単になります。しかし、GoogleのどれもメモリにないEditGridPanelの簡単な例を掘り下げても、EditGridPanelが呼び出しを行うのに役立ちません。
探していないもの:
- REST-通常のGETまたはPOSTで更新するだけです
- 新しいレコードを挿入するか、行を削除します。今のところのみ更新します。
- バッチ更新-一度に1つのセルを編集します。
- 多数のコード-ScriptaculousのAjax.InPlaceEditorのように、これは簡単なはずです
解決
ようやくわかったのは、ストアにライターが必要なことです。
var ds = new Ext.data.JsonStore({
autoSave: true,
url: "ajax-handler.aspx",
method: "POST",
timeout: 120000,
root: "rows",
totalProperty: "results",
idProperty: "primarykeyvalue",
fields: previewColumnConfig,
baseParams: {
now: (new Date()).getTime()
},
writer: new Ext.data.JsonWriter({
encode: true,
listful: false
})
});
注:
- 「今」とはbaseparamは、「一部のブラウザ」を回避するためのものです。 (推測)AJAX結果のキャッシュ
- "エンコード" POSTでの単なるJSON結果ではなくPOST変数を返します。
- " listful"ユーザーは一度に1つの行/列のみを編集し、配列を取り込むためにサーバー側のパーサーを設計する必要がないため、無効になります。1行だけを期待できます。
- はい、タイムアウト値は本当に長いです
- previewColumnConfigは事前に定義され、私の列の定義を保存します。
他のヒント
Ext.grid.EditorGridPanelのaftereditイベントを使用できます。これは、エディターがぼやけた後に発生します。また、beforeeditイベントが発生したときに定期的な(間隔)チェックメソッドを設定し、aftereditイベントが発生したときにそれをクリアすることもできます。
aftereditの例:
EditorGridPanel.getColumnModel().getCellEditor(column).on('afteredit', function() {
//do ajax call for the update.
});
定期チェッカーのサンプルが必要かどうか教えてください。それを書きます。
所属していません StackOverflow