あなたの助けを期待して、私が必要としているものの解決策にたどり着くために、道場のドキュメントとオンライン情報の両方に苦労しています。
グリッドからソースまたはターゲットへの 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) {}