获取Asp.net中Treeview控件的Node双击"事件"!
2009-08-10 16:15
218 查看
今天的开发工作涉及到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事件代码如下所示:
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);
}
}
通过查看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事件代码如下所示:
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);
}
}
相关文章推荐
- ASP.NET - TreeView Web 服务器控件事件
- asp.net获得数据控件事件索引并获取其中值总结
- ASP.NET Postback事件来源控件的获取
- 菜鸟学Asp.Net——GridView控件之RowDataBind事件中如何获取已绑定的数据
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- ASP.NET -TreeView Web 服务器控件事件
- 不使用ASP.NET服务器端控件(包括form表单不加runat="server")来触发.cs里的事件(方法),(适用于有代码洁癖者)。
- asp.net gridview itemtemplate中控件事件获取行参数
- 获取当前页面触发事件的控件(asp.net)
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- asp.net 中出现<input type="file"/> 控件中获取不到全路径
- asp.net获得数据控件事件索引并获取其中值总结
- 用JavaScript获取Asp.net服务器端控件CheckBoxList的选中值数组
- ASP.NET Web 服务器控件事件模型
- ASP.NET页面事件过程-多个用户控件时的执行过程
- 遍历获取ASP.NET页面控件的名称及值
- asp.net treeview控件无刷新选择和删除节点的ajax方法
- 关于Asp.net web控件事件处理的一点理解
- js 获取 asp.net 服务器端控件 Label 与 TextBox RadioButtonList 与 DropDownList 的值
- ASP.NET Web 服务器控件事件模型