我正在努力处理dojo的文档和在线信息,以获得我需要的解决方案,希望得到你的帮助。
我正在从网格到源或目标实现DND:
new dojox.grid.enhanced.plugins.GridSource(dojo.byId("songForm"), {
isSource: false,
insertNodesForGrid: false
});
但是我没有在该目标中插入任何内容我正在使用onDropGridRows
列表器来创建我自己的值,这是一个按钮并将其插入另一个具有正常dnd激活(calpanel)的div中:< / p>
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
});
}
我面临的两个问题是:
1)songForm面板应该只是一个来自网格的目标,它也是作为常规dnd源的目标运行的,我怎么能阻止它发生呢?
2)我实现的监听器如下所示正在监听任何DND操作,而不仅仅是我提供的节点你知道为什么吗?
dojo.connect(source, "onDndDrop", lang.hitch(this,function (grid, rowIndexes) {}
答案 0 :(得分:0)
基于我之前评论的一个例子......
checkAcceptance: function (source, nodes) {
if (source intanceof yourGridClass) {
return true;
}
// You may need to use this.inherited(arguments) here
return false;
}
checkAcceptance
会包含在您的songForm
代码中。
对于你的第二个问题,我发现情况也是如此。我不知道为什么会这样,但使用checkAcceptance
和checkItemAcceptance
来处理很容易。 checkItemAcceptance
与checkAcceptance
类似。不同之处在于您已经确定目标可以接受来自源的内容,但现在您正在检查是否可以接受您正在丢弃的特定项目。
我希望这会有所帮助。