2

ExtJS ドラッグ アンド ドロップを使用して、ドラッグ プロキシをカーソルの下の中央に配置しようとしています (プロキシ: ドラッグされる要素を表す半透明のフィラー)。このように物理的に中央に配置できますが、その後適切にドロップしません。

view.dragZone = Ext.create('Ext.dd.DragZone', view.getEl(), {

    onStartDrag: function(x, y) {
        this.setDelta(150, 20); // (the element is 300 x 40)
    },

    //.. other DD configs

});

これを使用してカーソルをドロップ ゾーンに移動すると、どこかにランダムにドロップしたかのように元の位置にスライドして戻ります。

これを使用しない場合、カーソルはオブジェクトの約 20 ピクセル北西にあります (つまり、中央に配置されていません) が、ドロップ ゾーンに問題なくドロップできます。

カーソルがドラッグ プロキシの真上にあるため、カーソルがドロップ ゾーンの真上にないことに何か関係があるのではないかと考えました。ドロップ ゾーンの z-index をリセットして、ドラッグ プロキシの上に移動しようとしましたが、うまくいかないようでした。言及する価値のない他のいくつかの非常にランダムなことを試しました。

ドラッグ プロキシがカーソルの中央に配置されるようにドラッグ アンド ドロップを正常にセットアップした人はいますか?

4

1 に答える 1

3

プロキシを中央に配置し、グリッド ドラッグ/ドロップ プラグインのライブ プレビューで適切にドロップすることを確認できました。

Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name'],
    data: [["Lisa"], ["Bart"], ["Homer"], ["Marge"]],
    proxy: {
        type: 'memory',
        reader: 'array'
    }
});

var p = Ext.create('Ext.grid.Panel', {
    store: 'simpsonsStore',
    columns: [
        {header: 'Name',  dataIndex: 'name', flex: true}
    ],
    viewConfig: {
        plugins: {
            ptype: 'gridviewdragdrop',
            dragText: 'Drag and drop to reorganize'
        }
    },
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

p.view.plugins[0].dragZone.onStartDrag = function() {
    this.setDelta(80, 10);
};

Ext.view.DragZoneとあまり変わらないように見えますExt.dd.DragZone。ただし、Ext.view.DropZoneレコードがドロップされている場所を確認するためにかなりのロジックが追加されます。グリッドのドラッグ/ドロップ プラグインでドロップが正しく機能する理由は、おそらくそのロジックにあると思います。

于 2013-03-07T04:52:44.160 に答える