获取Asp.net中Treeview控件的Node双击"事件"!

    今天的开发工作涉及到Treeview控件,其中有需求是双击Node结点然后向一个List控件中添加一条信息,找了很多的资料,其中关于获取双击的大概是在02年或者03年时候的一个Treeview控件,但是在ASP.net2.0中控件的行为有所改变,而且并不像第三方控件那样支持很多的客户端事件,在添加Node的时候,我们不能够使用类似普通控件那样在Attributes中增加OnDblClick的事件的处理代码.
    
    通过查看Asp.Net生成的前端的HTML代码,可以发现最终生成的TreeView的前端展示是一个DIV,那么我们其实可以通过通过Div的双击事件来进一步处理,所以,我们首先先在PageLoad事件中向TreeView控件增加双击的客户端事件代码:
   
this .tvDept.Attributes.Add( " ondblclick " " javascript:return treeNode(event, '') " );

    在客户端的事件中,如果我们能够得到Node结点的相关引用,那么事情就会变得简单的多了,但是很不幸,由于Treeview控件没有对客户端进行支持,所以我们并不能够直接得到Node结点的引用,但是我们可以通过DOM来进一步找到相关的Node结点.通过试验,我发现通过参数传进来的event.srcElement可以得到Node的在DOM中的引用,更幸运的时这个属性有一个nameProp属性可以得到引发这个双击时的链接的值,有了这个信息解决这个问题就比较简单了,通过在程序中动态生成Node结点的时候将NavigateUrl指定为一段Javascript代码,例如:subNode.NavigateUrl = "javascript:var x='" + subNode.Value + "';",然后在treeNode事件中使用eval来创建x这个变量,然后直接使用这个变量就可以了.完整的treeNode事件代码如下所示:
ContractedBlock.gif ExpandedBlockStart.gif Code
        function treeNode(mEvent, text) {
            
var o;
            
// IE   
            if (mEvent.srcElement) {
                o 
= mEvent.srcElement;
            }
            
// Netscape 和 Firefox
            else if (mEvent.target) {
                o 
= mEvent.target;
            }

            
if (o.tagName == 'A' || o.tagName == 'a') {
                eval(o.nameProp);
                alert(x);
            }
        }

转载于:https://www.cnblogs.com/fxwdl/archive/2009/08/10/1542987.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值