开发者问题收集

ExtJs 向网格添加、删除、更新行

2009-11-10
26115

我需要让用户向网格添加新行。 用户还可以更新一行或多行。

最好的方法是什么?

尝试 使用 RESTful Store 示例 ,但无法使用 php 处理 REST 发布。

单击添加记录按钮时,它会触发两次 POST(一次是在单击时,一次是在按下更新时)。

此外,即使发布到数据库后,更新仍会保持标记。

谢谢。

3个回答

您应该密切关注 行编辑器 演示中的代码。请注意,他们向“添加”、“更新”和“删除”事件添加了事件侦听器,这些事件(在本例中)调用了存储的功能。

不确定您的 POST 来自哪里(因为您没有发布任何代码)。基本上,您会在存储的“更新”事件上设置一个侦听器。您的所有编辑都在本地进行,只会影响您的本地“存储”对象,除非您另有说明。通过将事件侦听器附加到存储的“更新”事件,然后您可以让它处理将数据发布回服务器,如果记录确实更改了 if(record.dirty) 。 “Store” 接收“update”事件,而 RowEditor 接收“afteredit”事件。至于更改标记,请仔细查看“Store”对象的 commitChanges() 方法。

Steve -Cutter- Blades
2009-11-11

我最近也遇到了同样的问题(即使响应是干净的,记录仍然被标记为脏的)。我可能有一个解决方案。我在带内为 JsonReader 定义元数据,但没有设置 successProperty,做出了一个可怕的假设,认为它会坚持默认的“成功”。一旦我提供了这个,所有的魔法就开始起作用了。我建议你检查一下 JsonReader 的配置,并仔细检查你发送的数据类型。Reader 对它返回的内容相当挑剔。你需要定义 idProperty、root、successProperty 等。

FWIW,它确实会抛出一个异常,但我从未在 Firebug 的控制台中看到它。我不得不经历艰巨的任务,逐步检查 Ext 的代码,以找到这个问题。

user223209
2009-12-02

双重 POST 和记录保持脏乱是同一个问题。

当网格中的某些内容被修改时,修改的记录列表将发送到服务器。您必须修改它们并返回它们,这些返回的值(与商店中的当前值进行比较?并且)在商店中更新并标记为不脏。 所以我认为问题出在您从服务器返回的值上。

您必须注意以下几点:格式问题(响应结构、根属性等)、以不同顺序列出的记录、没有 id 的记录(或 id 属性未正确设置)以及成功未设置为 true。

Triqui
2011-03-04