首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > PHP > 如何添加树的右键点击事件以及正确的节点点击事件(基于微软树)
【标  题】:如何添加树的右键点击事件以及正确的节点点击事件(基于微软树)
【关键字】:
【来  源】:http://blog.csdn.net/Joy_Zhao/archive/2006/11/09/1375363.aspx

如何添加树的右键点击事件以及正确的节点点击事件(基于微软树)

项目需要用到树控件,知道微软提供了一个WEB tree view控件,就拿过来用了。

可是在用的过程中,我需要实现树节点的左右键点击事件。但是微软的树只提供了对整个树的左右键点击事件。

所以不论你点击树的哪一部分而不是节点上,都会触发事件,这并不是我想要的结果,我希望仅鼠标点击节点本身的时候才会触发,所以我对treevie.htc进行了一些研究修改,基本上实现了我的需要。下面是我的解决方案:

首先注册事件:

<public:event name="onrightclick" id="_tvevtRightClick" />  <!--Joy XXX -->
<public:event name="onnodeclick" id="_tvevtNodeClick" />  <!--Joy XXX -->

然后找到:function contextmenu(),修改这个方法,其实只是增加一些代码:

function contextmenu()  
{    
    event.cancelBubble 
= true;
    
var el = this.parentElement.treenode;
    e 
= element.document.createEventObject(event);    
    e.treeNodeIndex 
= getNodeIndex(el);
    event.returnValue 
= element.fireEvent("oncontextmenu", e);
    g_nodeClicked 
= el;   
    _tvevtRightClick.fire(e);    
    fireQueuedEvents();
}

这样我们就实现了右击事件。

接着找到function doNodeClick(el),在方法最后增加一些代码:

function doNodeClick(el)
{
    
if (g_bInteractive == false)
        
return;
        
    g_nodeClicked 
= el;

    
// The element, which is in a content node outside of the document, is outside the event hierarchy.
    // Fire the event ourselves, rather than relying on bubbling.
    event.cancelBubble = true;    
    el.fireEvent(
"onclick");        // Execute our onclick handler
    element.fireEvent("onclick", event);  // Execute the tree's onclick handler

    
if (getNodeAttribute(el, "NavigateUrl"!= null)
    {
        
var target = getNodeAttribute(el, "Target");
        
if (target == null || target.toLowerCase() == "_self")
            
return false;
    }

    selectNode(el);
    e 
= element.document.createEventObject(event);    
    e.treeNodeIndex 
= getNodeIndex(el);       
    _tvevtNodeClick.fire(e);
    
return true;
}

这样我们就实现了左键点击事件。

这样就弥补了这些不足,希望这些对你有所帮助。

设为主页代码及添加到收藏夹代码大全:【上一篇】
简单实用的图片边框效果:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 80余截图诠释solaris10f for x86在vmware4.51安装全过程
  • 跟我学汇编 教程连载 (六)
  • 三阶非线性光学玻璃研究概况
  • XAML 学习(4)
  • Flash和Java结合开发的利器_《Java for Flash动态网站开发手札》_部分章节连载(9)
  • 一个只能输入数字的C#控件源码,并且可以限定数值类型,基本满足财务开发
  • 数字音频技术在广播中的应用
  • MySQLWrapper(推荐一款MySQL C API封装类库)
  • 如何使用PHP动态生成饼状图、柱状图和折线图
  • 杀连接已经超时了的进程(时间大于30分钟)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.