【问题标题】:Copy records in Drag and Drop Grid ext-js 4.2.1在拖放网格 ext-js 4.2.1 中复制记录
【发布时间】:2015-01-21 20:35:59
【问题描述】:

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

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

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

【问题讨论】:

  • 你能提供额外的代码来展示你到目前为止所做的尝试吗?或者更好的是 sencha fiddle 复制问题

标签: extjs drag-and-drop grid sencha-architect treepanel


【解决方案1】:

您应该将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();
    }
});

小提琴: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/

【讨论】:

  • 感谢您的回答。它现在正在工作。我在 beforeDrop 事件中使用 data.copy = true;
猜你喜欢
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多