在拖放网格 ext-js 4.2.1 中复制记录

Copy records in Drag and Drop Grid ext-js 4.2.1

我一直在寻找解决方案。 我有两个启用了拖放插件的网格面板。
我想将被拖到目标网格的记录的副本插入到中,但是一旦记录被放到其他网格中,记录就会在源网格中丢失。

我试图在很多地方找到一些解决方案。

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 配置
没有配置选项,因为 copy 存在。
谁能建议如何在 ext-js 4.2.1 中实现此功能。

感谢和问候
苏曼斯 K.P

您应该将 beforedrop 事件处理程序添加到目标网格视图并处理拖放。

示例:

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();
    }
});

Fiddle: 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();
});

http://jsfiddle.net/bgvxcz3k/2/