1

私は SmartGWT 3.0 を使用しており、外部のドロップを検出する必要がありLabelますTreeGrid。それを行うために多くの方法を試しましたが、どれも機能しません。ではCanvasドロップできますが、 はドロップを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();
4

2 に答える 2

2

キャンバスの場合、データがドロップされたときにすべてを受け入れることができると思います。TreeGridの場合、レコードに関連するものが必要です。オーバーライドしてテストしました。

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

これはこのスレッドに関連しています そしてこの場合イベントはトリガーされますがjavascriptエラーが発生するため、1つの解決策は、ラベルからドラッグイベントを取得し、ドロップされたものとして受け入れることができるTreeNodeなどをその場で作成することですグリッド側のデータ。それが役立つことを願っています...

于 2012-11-12T09:42:35.970 に答える
0

試す

TreeGrid.addFolderDropHandler();
于 2014-01-21T09:42:35.370 に答える