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

Extjs 在拖放网格ext js 4.2.1中复制记录,extjs,drag-and-drop,grid,sencha-architect,treepanel,Extjs,Drag And Drop,Grid,Sencha Architect,Treepanel,我一直在寻找解决办法。 我有两个启用了拖放插件的网格面板。 我希望将拖到目标网格中的记录副本插入,但一旦将记录放到其他网格中,记录就会丢失在源网格中 我试图找到一些解决办法,在很多地方都发现了这一点 Ext.create('Ext.grid.Panel', { store: 'testStore', columns: [ {header: 'Name', dataIndex: 'name', flex: true} ], viewConfig: { copy: true,

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

我试图找到一些解决办法,在很多地方都发现了这一点

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,文档中没有副本配置
复制时没有配置选项。
有人能建议如何在ExtJS4.2.1中实现这一功能吗

感谢和问候

Sumanth K.P

您应该将

beforedop
事件处理程序添加到目标网格视图并处理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();
    }
});
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();
});
小提琴:

如果您想多次添加一条记录,可以复制
data.records
数组中的记录

例如:

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

您是否可以提供其他代码来显示您迄今为止所做的尝试?或者更好的办法是复制问题的答案。它现在正在工作。我正在使用data.copy=true;在投递前事件中。