使用 ExtJS 4.1 保存一批记录时如何处理单个故障?
Posted
技术标签:
【中文标题】使用 ExtJS 4.1 保存一批记录时如何处理单个故障?【英文标题】:How to handle a single failure during saving a batch of records with ExtJS 4.1? 【发布时间】:2013-02-15 11:59:10 【问题描述】:假设我有一个包含用户列表的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【问题讨论】:
【参考方案1】:我发现了一个有趣的资源:@987654321@。乍一看,他们似乎实现了自己的客户端和服务器之间的通信逻辑,绕过了框架提供的代理功能。很难深入调查,因为源代码目前不可用。这是一个例子:
请求数据(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();"
【讨论】:
以上是关于使用 ExtJS 4.1 保存一批记录时如何处理单个故障?的主要内容,如果未能解决你的问题,请参考以下文章
使用 LINQ to SQL 时如何处理 SqlException“未找到记录”?
当您知道没有保存实体时如何处理 CoreData 中的获取请求