1

将 RadTreeView 节点拖动到另一个节点时,覆盖默认文本并创建“视觉提示”的最佳方法是什么。我开始了:

...
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 自己的文本的方法。

4

1 回答 1

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();
    }
}

希望这能在这么多年的时间里帮助别人,也许还有我自己;)

于 2010-06-24T13:57:54.440 回答