在Ext表格中进行本地编辑

3

我正在使用 ExtExt.grid.EditorGridPanel 创建网格,并使用本地数据的数组存储来填充网格中的行。当我编辑网格中的值时,它们在左上角显示一个小红色三角形,而且存储数据没有更新。

那么我该如何在 EditorGridPanel 中编辑本地数据呢?

我在 Ext 编辑网格示例 中看到了类似的问题,尽管该示例还设置了 URL,如下图所示。

enter image description here

解决方案:由于我只需要在本地保存更改,因此我只需执行以下操作。

settingsGrid.on('afteredit', function(evt){
settingsGrid.store.commitChanges()
})

它修复了问题,所有用户编辑的数据都会在本地存储中快乐地更新。
2个回答

5

左上角的红色三角形表示该值已被更改。当用户在网格中更改数据时,存储器确实会跟踪修改。

如果您需要保存修改,则必须将更新后的数据发送回服务器端。您可以使用 DataWriter 实现。请参考此示例

更新:如果您不打算将更新传输到服务器端,您可以使用以下方法:

  • getModifiedRecords() - 获取所有修改过的记录。
  • commitChanges() - 提交更改。
  • rejectModifiedRecords() - 拒绝对存储器的所有更改。

这些方法是客户端存储器上的操作。我想这就是您要找的内容。


但这是问题,我不想将任何东西发送到服务器,我想进行本地编辑,只想保留我的数据存储,你能给我展示一个DataWrite的例子,它将在客户端保留数据吗? - Anurag Uniyal
好的,但是用户编辑后会发生什么?难道他不应该将更改提交回源代码吗?您可以使用commitChanges()或者如果需要所有更改的数组,则可以使用getModifiedRecords()。 - Abdel Raoof Olakara
他不需要使用你指定的任何方法。我链接的示例只是从 XML 数据创建存储并使用该数据初始化 EditorGridPanel。同样的事情也可以用 ArrayStore 做到。 - McStretch
这是临时数据,用户需要在客户端上更改并预览,因此我不需要将其发送到服务器。 - Anurag Uniyal

1

Editor Grid Example使用EditorGridPanel而不需要向服务器发送请求(请查看该页面上的edit-grid.js链接)。您需要发布您的代码以帮助我们调试您的情况。

确保您的ArrayStore没有定义restful:true。如果您想保持本地,请使用data属性而不是url


示例中设置了 url: 'plants.xml',当我编辑该网格时,在 Firefox 中会看到红色边角(已修改),请参见我的问题编辑。 - Anurag Uniyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接