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 ピクセル下にあり、既存のドラッグ テキスト (RadTreeView) がまだ表示されています (ノード テキストの名前が表示されます - 削除またはオーバーライド/非表示にしたい)。

UPDATE OK私は今まで使ってきまし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 に答える