質問

ExtProxy 3.0にEditorGridPanelがあり、HttpProxyとJsonReaderを介して入力されています。編集可能な列「working」があります。

セルを編集した後、いくつかの基本パラメーター、行のIDフィールド、変更された列の名前、および新しい値を指定してXmlHttpRequestをサーバーに送信するにはどうすればよいですか?

リクエストが行われると、サーバー側の更新は簡単になります。しかし、GoogleのどれもメモリにないEditGridPanelの簡単な例を掘り下げても、EditGridPanelが呼び出しを行うのに役立ちません。

探していないもの:

  1. REST-通常のGETまたはPOSTで更新するだけです
  2. 新しいレコードを挿入するか、行を削除します。今のところのみ更新します。
  3. バッチ更新-一度に1つのセルを編集します。
  4. 多数のコード-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.
});

定期チェッカーのサンプルが必要かどうか教えてください。それを書きます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top