您的位置:首页 > 编程语言 > ASP

Asp.net 2.0的TreeView客户端个性化控制

2008-07-24 14:44 344 查看
ASP.NET 2.0TreeView 控件功能虽说强大,但其客户端控制很逊色,本文将讲解 TreeView 的客户端实现原理,并实现两个个性化操作:
  

(1) 节点的全部打开和关闭;

TreeNode Expand(or Collapse) all

(2) 只打开一个节点(关闭其他兄弟节点)。

just one node expanded(when a client expand one node all other will collaps)

用记事本打开页面源代码,可以找到一下两个脚本引用:

<script src="/WebUI/WebResource.axd?d=RAQeBcDUNuP9iuS8q3tNEw2&t=633300220640000000" type="text/javascript">

</script>

<script src="/WebUI/WebResource.axd?d=JuTdJhq3NM8Jq_RhssAkEg2&t=633300220640000000" type="text/javascript">

</script>

将"/WebUI/WebResource.axd?d=RAQeBcDUNuP9iuS8q3tNEw2&t=633300220640000000"拷到地址栏尾,下载脚本,并以 .js 命名,另一个同样操作。分析第二个脚本文件,可以看到TreeView的很多客户端函数,其中关键的一个 TreeView_ToggleNode 就是客户端点击时触发的事件。

  要想做个性化的操作,就得从 TreeView_ToggleNode 事件下手。我们无法更改.net封装好的脚本,只有“重写”。所谓的重写就是在原来的函数之后添加一个同名函数(因为js对于同名函数只调用最后一个)。

  TreeView_ToggleNode 的原函数:

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>LeftMenu_Tree</title>

</head>

<body bgcolor="#DDEDFD">

<form id="form1" runat="server">

<a href="javascript:TreeviewExpandCollapseAll('<%=TreeView1.ClientID%>', true)">Expand

All</a> <a href="javascript:TreeviewExpandCollapseAll('<%=TreeView1.ClientID%>', false)">

Collapse All</a>

<asp:TreeView ID="TreeView1" SkinID="tvClass" runat="server" ShowLines="true" NodeWrap="false">

</asp:TreeView>

</form>

</body>

</html>

<script language="javascript">

//-----------------------------------------------------------------------------

function $(s)

function isNull(_sVal)

function TreeviewExpandCollapseAll(treeViewId, expandAll)

function GetParentByTagName(parentTagName, childElementObj)

//-----------------------------------------------------------------------------

</script>

2. 只打开一个节点(关闭其他兄弟节点)

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>LeftMenu_Tree</title>

</head>

<body bgcolor="#DDEDFD">

<form id="form1" runat="server">

<a href="javascript:TreeviewExpandCollapseAll('<%=TreeView1.ClientID%>', true)">Expand

All</a> , <a href="javascript:TreeviewExpandCollapseAll('<%=TreeView1.ClientID%>', false)">

Collapse All</a>

<asp:TreeView ID="TreeView1" SkinID="tvClass" runat="server" ShowLines="true" NodeWrap="false">

</asp:TreeView>

</form>

</body>

</html>

<script language="javascript">

//2. 只打开一个节点(关闭其他兄弟节点)------------------------------------------

function TreeView_ToggleNode(data, index, node, lineType, children)

//折叠兄弟节点

function CollapseBrothers(data,childContainer)

//-----------------------------------------------------------------------------

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: