我一直在寻找解决方案。 我有两个网格面板,启用了拖放插件 我希望插入拖动到目标网格的记录副本,但是当一旦记录被丢弃到其他网格时,记录将在源网格中丢失。
我试图在很多地方找到一些解决方案。
Ext.create('Ext.grid.Panel', {
store: 'testStore',
columns: [
{header: 'Name', dataIndex: 'name', flex: true}
],
viewConfig: {
copy: true,
plugins: {
ptype: 'gridviewdragdrop',
dragText: 'Drag and drop to reorganize'
}
},
height: 200,
width: 400,
renderTo: Ext.getBody()
});
我使用的是ext-js 4.2.1,在文档中没有 copy 配置
目前没有复制的配置选项
任何人都可以建议如何在ext-js 4.2.1中实现此功能。
谢谢&问候
Sumanth K.P
答案 0 :(得分:0)
您应该将beforedrop
事件处理程序添加到目标网格视图并处理drop。
示例:
me.getView().on('beforedrop', function(node, data, overModel, dropPosition, dropHandlers) {
var record = data.records[0];
if (me.getStore().findBy(function(r) { return r.get('idx') == record.get('idx'); }) == -1) {
console.log('Process drop');
dropHandlers.processDrop();
} else {
console.log('Cancel drop');
dropHandlers.cancelDrop();
}
});
小提琴:http://jsfiddle.net/bgvxcz3k/1/
如果您希望多次添加一条记录,可以复制data.records
数组中的记录。
示例:
me.getView().on('beforedrop', function(node, data, overModel, dropPosition, dropHandlers) {
data.records[0] = data.records[0].copy('id' + idseed++);
console.log('Process drop');
dropHandlers.processDrop();
});