0

あなたの助けを期待して、私が必要としているものの解決策にたどり着くために、道場のドキュメントとオンライン情報の両方に苦労しています。

グリッドからソースまたはターゲットへの DND を実装しています。

new dojox.grid.enhanced.plugins.GridSource(dojo.byId("songForm"), {
                    isSource: false,
                    insertNodesForGrid: false
                });

しかし、私はそのターゲットに何も挿入していませんonDropGridRows。listner を使用してボタンである独自の値を作成し、通常の dnd がアクティブ化されている (calpanel) を持つ別の div に挿入しています。

   dojo.connect(formTarget, "onDropGridRows", lang.hitch(this,function (grid, rowIndexes) {

   var s = grid.store,
                        row = rowIndexes[0];

                    // html.set(dom.byId("calPanel"), "<div id='calButton_" + s.getValue(grid.getItem(row), "elementid") + "'></div>");
                    // domConstruct.place("<div id='calButton_" + s.getValue(grid.getItem(row), "elementid") + "'></div>", "ElementsCalculator", "last");
                    new dijit.form.Button({
                        label: s.getValue(grid.getItem(row), "pagename") + ":" + s.getValue(grid.getItem(row), "col") + ":" + s.getValue(grid.getItem(row), "row"),
                        class: 'dojoDndItem',
                        onClick: function () {

                        }
                    }).placeAt("calPanel");
                    if (source != null) {
                          source.destroy();
                    }

                    source = new dojo.dnd.Source("calPanel", {
                        copyOnly: false
                    });
    }

ここで直面している2つの問題:

1) グリッドからのターゲットのみであるべき songForm パネルが、通常の dnd ソースからのターゲットとしても実行されています。

2) 以下に示すように実装したリスナーは、私が提供したノードだけでなく、任意の DND アクションをリッスンしています。理由はわかりますか?

  dojo.connect(source, "onDndDrop", lang.hitch(this,function (grid, rowIndexes) {}
4

1 に答える 1