1

假设我有一个Ext.grid.Panel包含用户列表。经过一些更新操作后,我将这批修改后的记录发送到远程数据库:

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

在服务器端,我将一条记录存储在数据库中。由于知道登录名必须是唯一的,因此不会存储第二条记录,因为“Jack”不再可用。然后,我必须通知用户他错误地将相关网格单元标记为脏。有没有办法让 ExtJS 处理它?例如,JSON 响应中的标志?


更新

有时我需要更高的精度,仅将单个记录的一个字段标记为无效。例如,假设我想更新一条记录的两个字段,“login”和“favorite”:

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

两个字段一起发送到同一个 URL,然后通过两个不同的 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 回答