2015-01-21 4 views
0

Я искал решения для этого. У меня есть две сетки, у которых есть плагин перетаскивания.
Я хочу, чтобы копия записи была перетащена в целевую сетку, которую нужно вставить, но когда одна запись отбрасывается в другую сетку, запись теряется в исходной сетке.Копирование записей в сетке перетаскивания 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() 

});

Я использую внутр-JS 4.2.1 и в документе нет копии конфигурации присутствует
Там нет опции конфигурации, как скопировать подарок.
Может ли кто-нибудь предложить, как достичь этой функциональности в ext-js 4.2.1.

Благодаря & уважение
Саманты K.P

+0

Вы могли бы предоставить дополнительный код, чтобы показать, что вы пробовали до сих пор? или даже лучше [скрипка sencha] (http://fiddle.sencha.com), реплицируя проблему. – Scriptable

ответ

0

Вы должны добавить 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/

+0

Спасибо за ответ. Теперь он работает. Я использую ** data.copy = true; ** в событии beforeDrop. – sumanth

Смежные вопросы