ASP.NET 2.0 TreeView 控件的客户端控制

treeview扩展板 很好很强大 treeview扩展板treeview扩展板treeview扩展板treeview扩展板treeview扩展板treeview扩展板 支持check box json 数据 性能超好! 立即下载

  asp.net 2.0 的 TreeView 控件功能虽说强大,但其客户端控制很逊色,本文将讲解 TreeView 的客户端实现原理,并实现两个个性化操作:
  (1) 节点的全部打开和关闭;
  Client Side Expand/Collapse All Nodes For ASP.NET 2.0 TreeView.
  (2) 只打开一个节点(关闭其他兄弟节点)。
  Just one expanded node in ASP.NET 2.0 TreeView (When a client expand one node all other will collaps)
用记事本打开页面源代码,可以找到一下两个脚本引用:

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

  将"/WebUI/WebResource.axd?d=RAQeBcDUNuP9iuS8q3tNEw2& amp;t=633300220640000000"拷到地址栏尾,下载脚本,并以 .js 命名,另一个同样操作。分析第二个脚本文件,可以看到TreeView的很多客户端函数,其中关键的一个 TreeView_ToggleNode 就是客户端点击时触发的事件。
  要想做个性化的操作,就得从 TreeView_ToggleNode 事件下手。我们无法更改.net封装好的脚本,只有“重写”。所谓的重写就是在原来的函数之后添加一个同名函数(因为js对于同名函数只调用最后一个)。

  TreeView_ToggleNode 的原函数:

function TreeView_ToggleNode(data, index, node, lineType, children) {
var img = node.childNodes[0];
var newExpandState;
try {
if (children.style.display == "none") {
children.style.display = "block";
newExpandState = "e";
if ((typeof(img) != "undefined") && (img != null)) {
if (lineType == "l") {
img.src = data.images[15];
}
else if (lineType == "t") {
img.src = data.images[12];
}
else if (lineType == "-") {
img.src = data.images[18];
}
else {
img.src = data.images[5];
}
img.alt = data.collapseToolTip.replace(//{0/}/, TreeView_GetNodeText(node));
}
}
else {
children.style.display = "none";
newExpandState = "c";
if ((typeof(img) != "undefined") && (img != null)) {
if (lineType == "l") {
img.src = data.images[14];
}
else if (lineType == "t") {
img.src = data.images[11];
}
else if (lineType == "-") {
img.src = data.images[17];
}
else {
img.src = data.images[4];
}
img.alt = data.expandToolTip.replace(//{0/}/, TreeView_GetNodeText(node));
}
}
}
catch(e) {}
data.expandState.value =  data.expandState.value.substring(0, index) + newExpandState + data.expandState.value.slice(index + 1);
}

  节点的全部打开和关闭(Client Side Expand/Collapse All Nodes)

<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){return document.getElementById(s);}
function isNull(_sVal){return (_sVal == "" || _sVal == null || _sVal == "undefined");}
function TreeviewExpandCollapseAll(treeViewId, expandAll)
{
var displayState = (expandAll == true ? "none" : "block");
var treeView = $(treeViewId);
if(treeView)
{
var treeLinks = treeView.getElementsByTagName("a");
var nodeCount = treeLinks.length;
var flag = true;
for(i=0;i<nodeCount;i++)
{
if(treeLinks[i].firstChild.tagName)
{
if(treeLinks[i].firstChild.tagName.toLowerCase() == "img")
{
var node = treeLinks[i];
var level = parseInt(node.id.substr(node.id.length - 1),10);
var childContainer = GetParentByTagName("table", node).nextSibling;
if(!isNull(childContainer))
{
if(flag)
{
if(childContainer.style.display == displayState)
{
TreeView_ToggleNode(eval(treeViewId +"_Data"),level,node,'r',childContainer);
}
flag = false;
}
else
{
if(childContainer.style.display == displayState)
{
TreeView_ToggleNode(eval(treeViewId +"_Data"),level,node,'l',childContainer);
}
}
}
}
}
}//for loop ends
    }
}
function GetParentByTagName(parentTagName, childElementObj)
{
var parent = childElementObj.parentNode;
while(parent.tagName.toLowerCase() != parentTagName.toLowerCase())
{
parent = parent.parentNode;
}
return parent;
}
//-----------------------------------------------------------------------------
</script>
2. 只打开一个节点,关闭其他兄弟节点(Just one expanded node, all other will collaps)
<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. 只打开一个节点,关闭其他兄弟节点(Just one expanded node, all other will collaps)
function TreeView_ToggleNode(data, index, node, lineType, children)
{
var img = node.childNodes[0];
var newExpandState;
try {
//***折叠兄弟节点(Collapse Brothers)-----
        CollapseBrothers(data,children);
//---------------------------------------

if (children.style.display == "none")
{
children.style.display = "block";
newExpandState = "e";
if ((typeof(img) != "undefined") && (img != null))
{
if (lineType == "l")
{
img.src = data.images[15];
}
else if (lineType == "t")
{
img.src = data.images[12];
}
else if (lineType == "-")
{
img.src = data.images[18];
}
else
{
img.src = data.images[5];
}
img.alt = data.collapseToolTip.replace(//{0/}/, TreeView_GetNodeText(node));
}
}
else
{
children.style.display = "none";
newExpandState = "c";
if ((typeof(img) != "undefined") && (img != null))
{
if (lineType == "l")
{
img.src = data.images[14];
}
else if (lineType == "t")
{
img.src = data.images[11];
}
else if (lineType == "-")
{
img.src = data.images[17];
}
else
{
img.src = data.images[4];
}
img.alt = data.expandToolTip.replace(//{0/}/, TreeView_GetNodeText(node));
}
}
}
catch(e) {}
data.expandState.value =  data.expandState.value.substring(0, index) + newExpandState + data.expandState.value.slice(index + 1);
}
//折叠兄弟节点(Collapse Brothers)
function CollapseBrothers(data,childContainer)
{
var parent = childContainer.parentNode;
for(i=0; i< parent.childNodes.length; i++)
{
if(parent.childNodes[i].tagName.toLowerCase() =="div")
{
if(parent.childNodes[i].id != childContainer.id)
{
parent.childNodes[i].style.display = "none"
}
}
else if(parent.childNodes[i].tagName.toLowerCase() =="table")
{
var treeLinks = parent.childNodes[i].getElementsByTagName("a");
if(treeLinks.length > 2)
{
var j=0;
if(treeLinks[j].firstChild.tagName)
{
if(treeLinks[j].firstChild.tagName.toLowerCase() == "img")
{
var img = treeLinks[j].firstChild;
if(i==0)
img.src = data.images[8];
else if(i==parent.childNodes.length-2)
img.src = data.images[14];
else
img.src = data.images[11];
}
}
}
}
}
}
//-----------------------------------------------------------------------------
</script>
好看的Winform.TreeView 自定义的美化TreeView源码和对应demo,样式好看,对初学者是很好的学习资料,然后也可用于项目中 立即下载

相关推荐

.NET界面开发美化

.net开发的界面美化包,直接调用文件即可实现界面的美化

ASP.NET -自定义 TreeView Web 服务器控件的外观

      TreeView 控件的呈现是可完全自定义的,这使得可以使用多种多样的显示样式。若要自定义 TreeView 控件的外观,可以执行以下操作:      ·指定影响控件显示和呈现的 TreeView 控件属性。·指定一个 ImageSet 属性,该属性选择一组在运行时同控件一起呈现的内置图像。·指定用于控制 TreeView 控件内特定 TreeNode 对象组的显示

dodream的专栏 4506

ASP.NET TreeView树型菜单操作实例

要求用asp.net实现一个树形机构,根节点为 福建省,展开+号后为福州市、泉州市、宁德市等9个地市,再展开+号福州市,则现实台江区、鼓楼区等节点。点击节点的名称弹出提示框,提示框的内容为:“你当前选择的节点名称为:XXX”--其中XXX为当前选中节点的名称。 根据以上要求设计一个数据库表,节点名称可根据数据库中的内容动态显示。

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

  asp.net 2.0 的 TreeView 控件功能虽说强大,但其客户端控制很逊色,本文将讲解 TreeView 的客户端实现原理,并实现两个个性化操作:   (1) 节点的全部打开和关闭;   Client Side Expand/Collapse All Nodes For ASP.NET 2.0 TreeView.   (2) 只打开一个节点(关闭其他兄弟节点)。   Just one

lizhenhuatop的专栏 521

一个非常优秀的基于ASP.NET +AJAX 实现的TreeView控件源码及例子程序

一个非常优秀的基于ASP.NET +AJAX 实现的模版化维护管理TreeView控件源码及例子程序。

打造基于jQuery的高性能TreeView(asp.net)

根据我的项目实践情况,主要是几个关键点: 1:支持静态的树,即一次性将全部数据加载到客户端。2:异步树,即一次只加载一级或若干级节点,子节点可以异步加载数据。3:Checkbox树(可能是静态树也可能是异步树),用于选择(如选择组织机构,选择数据字典项)等,最好是能够支持节点级联(这个是难点)4:能够承载大数据量,并性能表现优异5:能够在主流浏览器中运行良好 那我要打造的TreeView就是为了实现这个5个主要指标的。 先来看下效果图 上图是中国行政区域的数据树,总共得节点是3500+。 那么我们要开工了; 1:第一个确定的节点Dom结构(即用什么样的HTML来构建节点) 比较土的是tab

asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择...

2.包括TreeView的asp.net程序的打包问题:http://ttyp.cnblogs.com/archive/2005/06/01/165621.htmlhttp://community.csdn.net/Expert/topic/4300/4300558.xml?temp=.7716028在web.config加入以下节 <configSections>...

weixin_34128534的博客 77

【AI】使用Cursor和AI编程生成的VUE前端框架

本项目是一个基于VUE.js的前端框架,结合了登录、图形验证码、权限校验等常用功能模块。通过与Cursor AI交互生成的代码,展示了AI在编程中的潜力与效率。

清欢渡的博客 9860

TB.TreeGrid 树形列表 Asp.net自定义控件

很久之前写的控件,发布在codeplex上。包括源代码和Demo。这里是Demo下载,希望大家继续完善。 支持Asp.net2.0,MS Ajax,Postback,CallBack(可用来加载子节点),Event(Select,Expend,Collaspe,RowCreate,RowDataBound,RowCommand),DataBind 使用方法与TreeView和GridView相...

weixin_34247155的博客 149

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 600

宇树智能人形机器人模块化腿部动力系统技术拆解

o电机防摔防护板(3.1.5.1)→端盖总成(3.1.5.2)→电机外壳(3.1.5.4)的冲击力传递路径;o散热风扇(3.1.3.1)推动冷风→大腿基座腔体→散热片组(3.1.5.7)→中空大腿杆排出;o防御专利:覆盖“关节热管理风道接口标准”、“抗冲击结构身份编码”;o大腿杆腔体(3.1.3.4)内置反平行四边形机构,避免连杆外露。:力传感器(3.1.8.4.2)仅部署于足端,缺失关节力矩反馈。:更换行星减速器(3.1.5.5)需拆解整个电机模块;o热量传导路径:电机定子→外壳→散热片组。

weixin_50955533的博客 1232

ASP.NET中TreeView控件的使用方法

TreeView控件的使用方法- -                                              树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。现在在ASP.NET中利用微软提供的Internet Explorer WebControls它使得网页上的树形图开发与

C#,SQL,Castle,Hibernate,MVC,Spring.net 6961

SAP PS模块预算控制实战:为什么你的采购订单金额和预算占用对不上?

本文深入解析SAP PS模块中采购订单金额与预算占用偏差的常见问题,揭示承诺成本与实际成本的分流处理机制。通过实战案例和六步定位法,提供发票拆分、跨年度预算等典型场景的解决方案,并分享预防性配置框架和最佳实践,帮助企业有效控制预算偏差。

weixin_30363981的博客 515

asp.net 2.0 中 TreeView控件中的checkbox客户端操作

 最近有一个项目要做到用树形结构来控制权限, 要做到以下三条 当选择根节点时所有的子节点都要被选择 当选择子节点时相应的根节点也要被选择 当所有子节点取消选择时根节点也要取消选择。   树形控件用的是asp.net 2.0自带的treeview控件,如何控制它的checkbox一点头绪也没有,google上找了找,发现这个问题还是比较普遍的,终于找了一

kyouken2007的专栏 796

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

12v / 24v智能模拟高侧MOSFET栅极驱动器。2ED2410-EM具有输入CPP和CPN的电压比较器。该比较器可用于基于任何模拟电压触发SAFESTATE模式,甚至是外部电压2ED2410-EM。CPP为比较器的正输入,CPN为负输入。VcPREF可以通过微控制器进行调节,也可以通过板载电源芯片(如英飞凌SBC)或简单的分压器在限制VcP(REF)内进行固定,以保持稳定性。使用此比较器允许2ED2410-EM进入SAFESTATE并独立于微控制器关闭MOSFET。

让学习成为一种习惯 2188

R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

data+scenario+science+insight 3926

TreeView服务器控件

TreeView服务器控件是ASP.NET 2.0引入的另一个新控件,笔者非常喜欢这个控件。TreeView服务器控件是一个功能非常丰富的控件,可以显示层次数据,很适合显示包含在.sitemap文件中的内容。图16-8说明了该控件如何显示本章前面一直在使用的站点地图(程序清单16-1)的内容。该图首先在屏幕顶部显示了一个完全折叠的TreeView控件,第二个TreeView控件是完全展开的。

logicbiz的专栏 3802

【数据集】全球预报系统GFS概述:数据下载及处理

【数据集】全球预报系统GFS概述:数据下载及处理

WW、forever的博客 5750

关于TreeView控件

1.下载地址 http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp 安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里2.运行时无法显示 一般是TreeView的版本问题,最好下载英文版自动安装版本重新安装,

fengzheng 893

在 RAP 里把编号这件事做得既优雅又合规:Early Numbering 与 Late Numbering 的落地指南

本文探讨了 SAP RAP 框架中的三种主键编号策略及其适用场景。文章首先指出传统 ABAP 应用中主键处理的局限性,详细分析了早期编号(外部/内部)和延迟编号的差异,强调延迟编号在避免业务断号方面的优势。通过 Partner 业务对象案例,文章演示了延迟编号的实现方法,包括行为定义配置、保存类实现和编号分配逻辑。同时指出测试中常见的校验陷阱,并提醒生产环境应避免简单的 MAX+1 方案,建议采用原子取号机制确保并发安全。全文从业务合规性和技术实现两个维度,为 RAP 应用的编号策略选择提供了实用指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1842

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: PHP日期时间函数的高级应用技巧
下一篇: ASP.NET 字符串日期格式判断(全部格式)
UniMagic
博客等级 码龄20年 24粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值