2015-01-21 5 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() 

}); 내가 사용하고

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

바이올린 : 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

답변 주셔서 감사합니다. 지금 작동 중입니다. beforeDrop 이벤트에서 ** data.copy = true; **를 사용하고 있습니다. – sumanth