1

Ext.grid.Panelユーザーのリストを含む があるとします。いくつかの更新操作の後、変更されたレコードのバッチをリモート データベースに送信します。

[{"id":1,"login":"Jack"},{"id":2,"login":"Jack"}] // request body

サーバー側では、データベースにレコードを次々と保存します。ログイン名は一意でなければならないことがわかっているため、「Jack」が使用できなくなったため、2 番目のレコードは保存されません。次に、関連するグリッド セルのダーティ マークを間違えたことをユーザーに通知する必要があります。ExtJS にそれを処理させる方法はありますか? たとえば、JSON 応答のフラグですか?


アップデート

場合によっては、1 つのレコードの 1 つのフィールドのみを無効としてマークするなど、さらに精度が必要な場合もあります。例として、1 つのレコードの 2 つのフィールド "login" と "favorite" を更新するとします。

[{"id":1,"login":"Jack","favorite":true}] // request body

両方のフィールドが同じ URL に一緒に送信され、2 つの異なる SQL クエリを介して別々に処理されますが、「ログイン」の保存は成功しますが、「お気に入り」の保存は失敗します。ExtJS は、単一の JSON 応答から各フィールドを個別に処理できますか?


アップデート

最終的に、主な質問は次のとおりです: ExtJS 4 データ パッケージをサーバー側の CRUD API に接続するためのベスト プラクティスは何ですか?

サーバー側の CRUD アーキテクチャ、リクエスト ボディと HTTP POST パラメータ、レコードのバッチと単一のレコード、エラー処理と JSON 応答など、関連するトピックについてご自身の経験を共有していただけますか?

ここに私自身の作業環境があります:

  • ASP.NET 3.5
  • ExtJS 4.1.1a
  • Ext.data.proxy.Ajax
4

1 に答える 1

0

興味深いリソースを見つけました: http://mvc.ext.net/#/GridPanel_Update/Batch。一見すると、フレームワークによって提供されるプロキシ機能をバイパスして、クライアントとサーバーの間に独自の通信ロジックを実装しているように見えます。ソース コードが現在入手できないため、詳細な調査は困難です。例を次に示します。

リクエストデータ (HTTP POST) :

data: {
    "Updated": [{
        "Id": 1,
        "Email": "fred@flintstone.com",
        "First": "Fred",
        "Last": "Flintstone"
    }],
    "Created": [{
        "Email": "test@test.com",
        "First": "f",
        "Last": "l",
        "PhantomId": "ext-record-1"
    }]
}

応答データ:

{script:"var _m0 = App.Store1.getByInternalId(\"ext-record-1\");_m0.setId(8);_m0.commit();App.Store1.getById(1).commit();"}
于 2013-02-21T08:57:51.990 に答える