Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不同场景中使用dojo dnd_Javascript_Dojo_Drag And Drop - Fatal编程技术网

Javascript 如何在不同场景中使用dojo dnd

Javascript 如何在不同场景中使用dojo dnd,javascript,dojo,drag-and-drop,Javascript,Dojo,Drag And Drop,我正在与dojo的文档和在线信息进行斗争,以获得我需要的解决方案,希望您的帮助 我正在实现从网格到源或目标的DND: new dojox.grid.enhanced.plugins.GridSource(dojo.byId("songForm"), { isSource: false, insertNodesForGrid: false }); 但我没有在该目标中插入任何内容,而是使

我正在与dojo的文档和在线信息进行斗争,以获得我需要的解决方案,希望您的帮助

我正在实现从网格到源或目标的DND:

new dojox.grid.enhanced.plugins.GridSource(dojo.byId("songForm"), {
                    isSource: false,
                    insertNodesForGrid: false
                });
但我没有在该目标中插入任何内容,而是使用
onDropGridRows
listner创建我自己的值,这是一个按钮,并将其插入另一个已激活正常dnd(calpanel)的div中:


一个基于我之前评论的例子

checkAcceptance: function (source, nodes) {
    if (source intanceof yourGridClass) {   
        return true;
    }

    // You may need to use this.inherited(arguments) here
    return false;
}
checkAcceptance
将以您的
歌曲形式出现

关于你的第二个问题,我发现情况也是如此。我不知道为什么会这样,但是使用
checkAcceptance
checkitemcacceptance
很容易处理<代码>检查项目验收
类似于
检查验收
。区别在于你已经确定你的目标可以接受来自源代码的内容,但是现在你正在检查你要删除的特定项目是否可以接受


我希望这能有所帮助。

我没有具体的答案,因为我自己还在学习Dojo,只使用过一次DnD(而且我面前没有我的代码)。但是,也许我可以提出一些建议,帮助你们前进。首先,我发现下载未压缩的Dojo源代码非常有益。您可以准确地看到代码在做什么,这可以极大地增强您的理解。此外,如果这样做,请查找名为
checkItemAcceptance
的函数。您可以使用它来确定是否接受DROP。很抱歉,我不能提供更多的帮助…谢谢,我浏览了API和源代码,但它的文档很差,或者至少我不能提供正确的东西。对不起,我不清楚我的回答。我只是想让你看看代码,看看它的功能,而不是文档。我相信任何Dojo DnD源对象也会用作目标。这就是Dojo的工作方式(如果我是正确的话)。因此,如果您不希望某个特定控件成为目标,请向该控件添加一个名为
checkAcceptance
的函数,并始终返回false。
  dojo.connect(source, "onDndDrop", lang.hitch(this,function (grid, rowIndexes) {}
checkAcceptance: function (source, nodes) {
    if (source intanceof yourGridClass) {   
        return true;
    }

    // You may need to use this.inherited(arguments) here
    return false;
}