【问题标题】:Local editing in an Ext grid外部网格中的本地编辑
【发布时间】:2023-03-13 14:47:01
【问题描述】:

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

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

我在 Ext Editor Grid Example 中看到了类似的问题,尽管该示例还设置了 URL,请参见下图。

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

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

它解决了这个问题,并且所有用户编辑的数据都会在本地存储中愉快地更新。

【问题讨论】:

    标签: extjs grid


    【解决方案1】:

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

    确保您没有在 ArrayStore 上定义 restful: true。如果你想保持本地化,我还建议使用 data 属性而不是 url

    【讨论】:

    • 该示例确实设置了url: 'plants.xml',当我编辑该网格时,我确实在 Firefox 中看到了红角(已修改),请查看我的编辑问题
    【解决方案2】:

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

    如果您需要保存修改,您必须将更新后的数据发送回服务器端。您可以为此使用DataWriter..refer to this example

    更新:如果您不打算将更新移动到服务器,您可以使用:

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

    这些方法是在客户端存储的操作。我想这就是你要找的。​​p>

    【讨论】:

    • 但这就是问题所在,我不想向服务器发送任何内容,我想做本地编辑,只想将我的数据保存在存储中,你能给我看一个 DataWrite 的例子吗将数据保留在客户端?
    • 好的,但是用户编辑后会发生什么?他不应该将更改提交回源吗?您可以使用 commitChanges() 或者如果您需要所有更改的数组,请使用 getModifiedRecords()
    • 他不需要使用您指定的任何方法。我链接到的示例只是从 XML 数据创建一个商店,并使用该数据初始化一个 EditorGridPanel。 ArrayStore 也可以做到这一点。
    • 这是临时数据,用户只需要在客户端更改和预览,所以我不需要将它发送到服务器
    猜你喜欢
    • 1970-01-01
    • 2015-04-03
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多