extjs 如何更新Ext JS Store中的单个记录?

x7rlezfr  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(151)

我的问题是,如果我编辑的任何记录/行的第二或第三或任何页面的信息编辑后,它会带我回到第一页,而不是把它带到同一页后更新记录/行。(我认为这是因为网格的存储更新和网格的重点放在第一页)。
我想在本地更新商店记录和网格视图行。这就是为什么在更新记录后,我可以保持相同的网格页面。
有什么好的选择吗?

ct3nt3jp

ct3nt3jp1#

在更新记录后,需要调用store.reload()而不是store.load()。

var me = this;
record.save({
  scope: this,
  success: function(record) {
    me.reloadGrid(record);
  },
  failure: function(record, operation) {}
});

reloadGrid: function(record){
  var gridStore; /*Get the reference to the grid store here*/
  gridStore.reload();
}

EQUIPAD将维护所有现有的存储参数,如页码,开始,限制等。如果要加载特定页面,请执行以下操作

reloadGrid: function(record){
  var gridStore; /*Get the reference to the grid store here*/
  gridStore.loadPage(3);
}

当然,如果您实际上没有以影响存储中的排序顺序的方式编辑记录,那么这将起作用。在这种情况下,您的商店将根据sort属性进行排序,并且记录可以出现在任何页面上的任何位置。

im9ewurl

im9ewurl2#

如果有人需要:

onSaved: function (scope , response, options) {
    var grid = scope.getGrid();
    if (grid == null){return;}
    var store = grid.getStore();
    if (store == null) {return;}
    // find if store has the record. quit if not
    var record = store.findRecord('id', response.responseJSON.id);
    if (record) {
        //update only THE record , not all store
        record.set(response.responseJSON);
    } else {
        return;
    }
}

set -将给定字段设置为给定值,将示例标记为脏并触发视图刷新。在后面,我们只刷新更新的记录,而不是所有的存储,如store.load()或store.reload()。

相关问题