gpt4 book ai didi

extjs - 在 EditorGridPanel 中上下移动行

转载 作者:行者123 更新时间:2023-12-01 13:56:32 27 4
gpt4 key购买 nike

有没有人知道/知道在 EditorGridPanel 中移动行的工作示例(或者知道为什么它对我不起作用)?我发现了几个例子,我发现的例子使用了这种方法:

// calculate the new index, then remove the record from the store, and re-insert it at the new index
grid.getStore().remove(record);
grid.getStore().insert(index, record);

在我的例子中,这失败了。它在网格中看起来不错,但实际上有 2 个 DELETE http 请求发送到服务器,没有 PUT。当我重新加载页面时,这一点变得很明显 - 移动的行实际上已被删除。

他是我店铺的基本配置:

var remoteJsonStore = new Ext.data.JsonStore({
storeId: 'colStore',
autoDestroy: false,
autoSave: true,
proxy: new Ext.data.HttpProxy({url:'/exercises/collect/data_rows'}),
restful: true,
format: 'json',
disableCaching: false,
autoLoad: true,
writer: new Ext.data.JsonWriter({
encode: false
}),
root: 'data',
idProperty: 'data_row_id',
fields: recordFields,
baseParams:{section_id:GridUtils.properties[gridId]['section_id']},
listeners:{
exception:function(misc){
// stuff....
},
beforewrite:function(store, action, rs, options, arg){
this.baseParams["position"]=rs.rowIndex;
},
beforesave:function(store, data){
// stuff.... }
}
}
});

最佳答案

我在实现 DnD 重新排序 View 时遇到了类似的问题。问题是存储将每个 remove()d 记录标记为删除,即使您重新插入它也是如此。

看了Ext.data.Store的remove()方法的源码,找到了解决办法:

remove: function(records, /* private */ isMove) {

看到了吗?我们可以传递第二个 bool 值来告诉商店我们正在移动记录!但是被标记为私有(private)且没有文档记录,我们在升级到新版本的框架时应该小心。

所以最终的解决方案是:

grid.getStore().remove(record, true); // just moving
grid.getStore().insert(index, record);

ExtJS 版本:4.1

关于extjs - 在 EditorGridPanel 中上下移动行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com