2010-06-24 81 views
1

将RadTreeView节点拖到另一个节点时覆盖默认文本并创建“Visual Cue”的最佳方法是什么? 我已经开始:Telerik RadTreeView拖放N个拖放节点

... 
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"; 
} 

是去约在屏幕上显示文本的方式吗?

目前它在可拖动节点下方大约20px,并且现有的拖动文本(RadTreeView)仍然显示(显示节点文本的名称 - 我希望它被删除或覆盖/隐藏)。

UPDATE OK我用args._domEvent.clientX.clientY现在。关闭,但现在我需要一种删除RadTreevIew自己的文本的方法。

回答

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

希望这可以帮助别人,也许自己在这么多年的时间;)