2012-01-16 6 views
0

ExtJS4를 사용할 때 문제가 있습니다.ExtJS4 : 트리에서 패널로 끌기

내 응용 프로그램에는 직원을 나타내는 문자열이 들어있는 트리가 있습니다.
이 트리 안의 드래그 & 드래그는 잘 동작합니다.
이제 직원을 드래그하여 삭제할 수있는 패널을 만들려고합니다.

ExtJS는 새로운 Ext.dd.DDTarget을 만들고 필요에 따라 dragzone을 정의합니다 (그리고이 부분은 삭제의 유효한 목표로 인식되기 때문에 작동합니다).하지만 직원을 삭제하면 , 아무 반응이 없습니다. 나는 단지 어떤 청취자를 사용해야하는지 정확히 어디에서 사용하는지 알아낼 수 없다. ...

그리고 나는 정말로 모른다. 나의 코드의 어느 부분이 나를지지하는데 당신을지지하기 위해이 질문을 게시해야 하는가? :

var trashDDTarget = Ext.create('Ext.dd.DDTarget', 'trashTarget', 'trashDrag'); 

: D) ... 그래서 난 그냥 ... :-) 내가 게시 할 일이없는 경우이 게시물을 편집해야합니다 생각 그래서 여기

를 게시하는 것은 내 DDTarget입니다 'trashTarget'은 패널 (아래)이고 'trashDrag'는 dragGroup의 이름입니다.

targetPanel :

var trashPanel = Ext.create('Ext.panel.Panel', { 
title: 'Trash!', 
id: 'trashTarget', 
width: 400, 
height: 150, 
renderTo: 'trash', 
bodyStyle: 'background-image: url(/images/trash_can.png) !important' 
}); 

을 그리고 이것은이 문제를 해결하기 위해 내 아이디어 중 하나입니다 : 일부 청취자 재정

Ext.override(Ext.dd.DDTarget, { 
onDragDrop : function(evtObj, targetElId) { 
    console.log(evtObj); 
}, 
onInvalidDrop: function(evt) { 
    console.log(evt); 
} 
}); 

을; 하지만 작동하지 않습니다.
내가 미리 :-) ... 난 당신이 나를 도울 수 어쩌면 사람을 혼동하지 않았다

감사합니다 희망
gilaras

------------ ---------------- UPDATE : 나는 그것에 항목을 드래그하면

나는 ...에서 gridpanel에
을 패널 변경이 트리에서 사라집니다. ..
...하지만 문서에 지정된 이벤트가 실행되지 않는 것 같습니다. ...
나의 새로운 패널을 다음

var trashPanel = Ext.create('Ext.grid.Panel', { 
title: 'Trash!', 
id: 'trashTarget', 
width: 400, 
viewConfig: { 
    plugins: { 
    ptype: 'gridviewdragdrop', 
    dropGroup: 'trashDrag', 
    dragGroup: 'trashDrag', 
    dragText: 'In den Papierkorb ziehen, um zu löschen...' 
    } 
}, 
height: 150, 
renderTo: 'trash', 
columns:[ 
    { 
    hidden: true 
    } 
], 

bodyStyle: 'background-image: url(/images/trash_can.png) !important' 
}); 

을하지만, 어떻게 든이 ... 중 하나가 작동하지 않습니다

흠 괜찮아, 내가 생각 나는 해결책 ;-)
을 발견했습니다
+0

를 글쎄, 그것은 델에 계속 eting my "안녕하세요 모두들 :-)", 그래서 상상해보십시오 ... :-P – gilaras

+0

좋아, 해결됐지만 (아직) 내 솔루션을 게시 할 수 없기 때문에 ... 할거야. 나중에 약간의 시간 ;-) – gilaras

답변

1

가장 좋은 것은 아니지만 필요한만큼 충분합니다. D
언젠가 언젠가이 주제에 대한 도움을 구하는 누군가가 그것을 찾을 수 있습니다 :-)

내 문제 (및 그것에 관한 나의 생각에 잘못된 점)은 내가하지 않았다는 것이다. 이벤트를 어디에서 잡을 지 알고 ...

var trashPanel = Ext.create('Ext.grid.Panel', { 
title: 'Trash!', 
id: 'trashTarget', 
width: 400, 
viewConfig: { 
    plugins: { 
    ptype: 'gridviewdragdrop', 
    dropGroup: 'trashDrag', 
    dragGroup: 'trashDrag', 
    dragText: 'In den Papierkorb ziehen, um zu löschen...' 
    }, 
    listeners: { 
    drop: function(node, data, overModel, dropPosition) { 
     console.log('Mitarbeiter mit ID ' + data.records[0].internalId + ' gedropt!'); 
     var antwort = function(btn){ 
     if(btn.indexOf('no') != -1){ 
      treeStore.load(); 
     } else { 
      Ext.Ajax.request({ 
       url: '/app/loeschenPage', 
       params: 
       { 
       id: data.records[0].internalId 
       }, 
       method: 'GET', 
       success: function() { 
       Ext.MessageBox.alert("Und tschüss...", "Mitarbeiter erfolgreich aus der Datenbank gelöscht."); 
       treeStore.load(); 
       } 
      }); 
     } 
     }; 
     Ext.MessageBox.confirm('Wirklich löschen?', 'Soll der Mitarbeiter WIRKLICH FUER IMMER geloescht werden? Das ist eine sehr lange Zeit...', antwort); 

    } 
    } 
}, 
height: 150, 
renderTo: 'trash', 
columns:[ 
    { 
    hidden: true 
    } 
], 

bodyStyle: 'background-image: url(/images/trash_can.png) !important' 
}); 

감사 어쨌든, 정말 내 문제를 적는 것은 나에 대해 생각 도움 :

도 :-) gridpanel의 viewConfig에 그것을 잡는 경우 또는 적어도 지금은 그래서 여기 나의 새로운 패널의 작품 당신이 viewConfig에 속성을 설정해야 트리에서 데이터를 삭제 방지하기

0

:-) 다른 방법으로 그것을 :

viewConfig:{ copy: true; }