ExtJs添加,删除,更新行到网格

时间:2009-11-10 20:04:28

标签: javascript extjs

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

这样做的最佳方式是什么?

我有tried使用RESTful Store Example,但无法使用php处理REST发布。

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

此外,即使在发布到数据库之后,也会对更新进行标记。

谢谢。

3 个答案:

答案 0 :(得分:3)

您应该密切关注Row Editor演示中的代码。请注意,他们将事件侦听器添加到“添加”,“更新”和“删除”事件(在本例中)称为商店的功能。

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

答案 1 :(得分:1)

我最近也遇到了同样的问题(即使响应很干净,记录仍然标记为脏)。我可能会为您提供解决方案。我正在为带内JsonReader定义metaData,并没有设置successProperty,做出了一个可怕的假设,它会坚持默认的“成功”。一旦我提供了这一切,所有的魔法开始工作。我的建议是重新检查JsonReader的配置并仔细检查发送它的数据类型。读者对它的回归非常挑剔。你需要定义idProperty,root,successProperty等。

FWIW,它确实抛出异常,但我从未在Firebug的控制台中看到它。我不得不经历艰难的任务,踩过Ext的代码来找到这个问题。

答案 2 :(得分:1)

双重POST和记录保持脏是同样的问题。

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

您必须注意以下事项:格式问题(响应结构,root属性,...),以不同顺序列出的记录,没有id的记录(或未正确设置的id属性)且成功未设置为true