软讯网络 > 网站建设 > 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;
}
这样我们就实现了左键点击事件。
这样就弥补了这些不足,希望这些对你有所帮助。
【相关文章】
没有相关文章