2012-11-09 105 views
1

我使用SmartGWT 3.0,我需要在TreeGrid中檢測到一個外部的Label,我嘗試了很多方法來做到這一點,但都沒有成功。 在Canvas我可以放下,但TreeGrid不檢測放置。 有沒有辦法做到這一點?在TreeGrid中放置一個標籤

TreeGrid tileGrid = new TreeGrid(); 
tileGrid.setAlign(Alignment.CENTER); 
tileGrid.setWidth(300); 
tileGrid.setHeight(300); 

tileGrid.setCanAcceptDrop(true); 

tileGrid.addDropHandler(new DropHandler() { 

    @Override 
    public void onDrop(DropEvent event) { 
     Window.alert("drop"); 
    } 
}); 

Canvas cv = new Canvas(); 
cv.setBorder("1px solid #CCCCCC"); 
cv.setWidth(300); 
cv.setHeight(300); 
cv.setCanAcceptDrop(Boolean.TRUE); 

cv.addDropHandler(new DropHandler() { 

    @Override 
    public void onDrop(DropEvent event) { 
     Window.alert("drop event"+event.toString()); 
    } 
}); 


Label lb = new Label("Drag me"); 
lb.setCanDrag(true); 
lb.setCanDrop(true); 
lb.setDragAppearance(DragAppearance.TARGET); 

// added the components to a HLayout 
panel.addMember(tileGrid); 
panel.addMember(cv); 
panel.addMember(lb); 

panel.draw(); 

回答

2

我認爲在畫布的情況下,它可以接受所有數據丟失。在的TreeGrid的情況下,指望一些相關的記錄.... 我測試了壓倒一切的

TreeGrid tileGrid2 = new TreeGrid(){ 
      @Override 
      public Boolean willAcceptDrop(){ 
       return new Boolean(true); 
      } 
     }; 

這關係與this thread 而在這種情況下,事件被觸發,但我們得到了一個JavaScript錯誤等等一種解決方案是從標籤中拾取拖動事件,並在運行中創建一個TreeNode或類似的東西,這可以被接受爲網格側的丟棄數據。 希望能它可以幫助....

0

嘗試

TreeGrid.addFolderDropHandler(); 
+0

你能解釋一下爲什麼這應該受到審判(雖然它有點清楚該方法的名稱)? – undefined

相關問題