将RadTreeView节点拖动到另一个节点时,覆盖默认文本并创建“Visual Cue”的最佳方法是什么。 我开始时:
...
telerik:RadTreeView OnClientNodeDragging="ClientNodeDragging"
...
function ClientNodeDragging(sender, args)
{
if (!visualClue)
{
visualClue = createVisualClue();
document.body.insertBefore(visualClue, document.body.firstChild);
}
visualClue.style.left = args._domEvent.screenX + "px";
visualClue.style.top = args._domEvent.screenY + "px";
}
是否可以在屏幕上显示文字?
目前它比可拖动节点低大约20 px,现有拖动文本(RadTreeView)仍然显示(显示节点文本的名称 - 我希望它被删除或覆盖/隐藏)。
更新
好的,我现在使用了args._domEvent.clientX
和.clientY
。关闭,但现在我需要一种方法来删除RadTreevIew自己的文本。
答案 0 :(得分:2)
我管理通过使用IE的调试器(可以使用任何其他调试器)来解决它并注意到发送者有这个_draggingClue - BINGO !! 所以剩下的就是像这样设计它:
function ClientNodeDragging(sender, args)
{
var node = args.get_node();
if (node.get_level() != 0)
{
var dom = args.get_domEvent();
var div = sender._draggingClue;
var moveCopyText = "Copy";
var hidden = document.getElementById("<%= MoveCopyHiddenField.ClientID %>");
if (dom.shiftKey) {
hidden.value = "true";
moveCopy = true;
}
else if (dom.ctrlKey) {
hidden.value = "false";
moveCopy = false;
}
else {
hidden.value = "true";
moveCopy = true;
}
if(moveCopy)
moveCopyText = "Move";
else
moveCopyText = "Copy";
div.className = "DragFile";
div.style.height = '15px';
div.style.paddingTop = '3px';
div.innerHTML = moveCopyText + " " + node.get_text();
}
}
希望这可以帮助某人,也许也许是我自己这么多年的时间;)