在Drag and Drop Grid ext-js 4.2.1中复制记录

时间:2015-01-21 09:30:53

标签: 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,
    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

1 个答案:

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

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