asp.net TreeView点节点中文字实现菜单的收缩与展开
ASP.NET中TreeView控件的动态绑定及定位展开
o e ds
用比较广 泛 , 如计 算 机 的资 源 管理 器、 司 组织 结 构 公 等 。在 We b开发 中常利 用独 立 的树形 控件 进 行树
形 图 的开 发 , 在 页 面 常 充 当导 航 器 的作 用 。而 在 实 其
说 明 获 取 Te N d re o e对 象 的 集 合 , 表 示 它 Te V w 控 件 中根 节点 re i e
际使 用中 , 多情况下 需要 将树形控件 与数据 库进行 很 连接 , 进行动态绑 定显示 节点及增 删节 点。本文 中所 举的例子是在 V 2 0 E S 0 5I 环境 中 用 V D B语 言进行 开发 的 ,s0 0 V 2 o 5已经集成 了 Te V w树形控件 , re e i 使用起 来
1 实践经验 Pata Eprne 2 1 r i l xeec cc i
维普资讯
20 年 第 6 期 08
计 算 机 系 统 应 用
表 3 t e o e l ro e表 r n d / an d e e
字段名 数据类型 I D Ie e n gr t 描述 节点 I 自增 ) 主键 ) D( ( 父节点 I( D 根节 点的此值定 为 0 ) 节点深度 ( 根节点深度为 0)
维普资讯
计 算 机 系 统 应 用
2 0 年 第 6 期 08
AS . T中 T e Ve 控件 的动态绑定及定位展开 P NE re i w
Dy a i n i g a d P sto i g a o tTr e e Co tol n rASP NE n m c Bi d n n o ii n n b u e Viw n r de u . T 浮光宾 王葵如 张 明伦 ( 京邮电大 学 光通信 与光波技术教育部重点实验 室 北京 10 7 ) 北 0 8 6
Winform开发常用控件之TreeView菜单导航和权限用法
Winform开发常⽤控件之TreeView菜单导航和权限⽤法TreeView⼀个很棒的控件,我们在做WEB开发时常常犯困的⼀个东东。
当然这⾥介绍winform⾥⾯的⽤法唠。
先介绍⼏个属性吧,CheckBoxes设置为true的话树形节点前⾯会出现checkbox勾选框、ImageList绑定树形⾥⾯的图标(界⾯上放⼀个Imgelist控件,绑定上即可)、ShowLines(树形展开时显⽰线条)等等哦,这个⽅法好,this.MenutreeView.ExpandAll();即Treeview加载后全部展开。
下⾯先介绍⼀个简单的菜单⽤法1、TreeView节点的设置和选取节点TreeView静态节点的设置⽅法很简单,主要⽤在软件的快捷导航中。
贴图,可以设置多级节点,每个节点设置Name和Text属性即可,如果觉得不美观,可以放⼀些图标。
本例中的图标是⽤ImageList绑定到⾥⾯的,还是⽐较简单。
设置好节点后,就可以写节点的事件了,贴代码///<summary>///树形⽬录菜单///</summary>///<param name="sender"></param>///<param name="e"></param>/// AfterSelect事件是点击节点时的事件private void MenutreeView_AfterSelect(object sender, TreeViewEventArgs e){string nodeselect = ;switch (nodeselect){case"⽤户管理": ShowUsermanager(); break;case"竞赛项⽬管理": ShowItemFrm(); break;case"参赛单位管理": ShowDepartFrm(); break;case"运动员信息": ShowMemberInfoFrm(); break;case"代表队名单": ShowMatchTeamFrm(); break;case"随机分组": ShowRandomGroupFrm(); break;case"分组信息": ShowGroupInfoFrm(); break;case"评分管理": ShowPointFrm(); break;case"成绩管理": ShowScoreFrm(); break;default: break;}}看到了吧,还是⽐较简单,case到以后,执⾏相应的⽅法即可,本例中主要是show⼀些窗⼝。
treeview用法
treeview用法Treeview一种常见的UI素,用于在显示层次结构的数据。
它通常用来显示目录树状结构,在 Windows统中,它经常被用作文件管理器,让用户可以快速查找和查看文件和文件夹。
在 web用中,Treeview于构建层次结构的菜单,用户使用它可以更加轻松和高效地浏览信息。
Treeview一种常用的控件,也是一种重要的交互元素。
Treeview 一般被用来显示多级树状结构,分级显示文件、文件夹和其他信息,以便用户可以快速找到所需的内容。
Treeview常有两种常见的操作,一是点击节点以展开或收缩节点,以查看其子节点;二是点击节点来查看其具体内容。
Treeview使用比较灵活,它可以应用于各种不同类型的介质上,如 Windows脑、web用等。
在 Windows统中,Treeview被用来作为用户界面的一部分,用户可以在 Treeview 中浏览不同的文件夹,管理文件;在 web用中,Treeview以用来显示和编辑目录结构,构建菜单;在自定义的软件中,Treeview以用来显示应用程序的层次结构,不同的节点可以指向不同的操作。
Treeview实现方式也有很多种。
在 Windows统中,Treeview以通过 Windows API实现,也可以使用可视化控件,如 WPF TreeView 件;对于 web用,可以使用 HTML、CSS JavaScript实现 Treeview,也可以使用 jQuery、Angular者其他基于 JavaScript技术来实现;对于软件程序,可以使用 C #、Java、Python语言来实现 Treeview。
无论是 Windows统、web用还是软件程序,Treeview是一种重要的 UI素,它可以帮助用户更加轻松和高效地浏览和操作信息。
无论你要构造什么样的 Treeview,记住要在设计时考虑到它的易用性,可以丰富 Treeview功能,提升它的用户体验。
ASP.NET中TreeView控件的使用
当安装该 控件后 ,在 .sx页 面顶端 添加如 下语句 就可 以注册该 控件 . ap
< % @ R g t a P e x= E o t l N m s a e e i e T g rf I C nr s a ep c = sr i o 字 >
<I C nrl:T eN d d= 节 点 名 称 x : E ot s re o eI o Tet 节 点 文
字 >
<I C nrl:T eN d d= 节 点 名 称 x = E ot s re o eI o Tet 节 点 文
字 > /
< /E o tos I C nrl:Tre d > eNo e < /E o tos I C nrl:Tr e d > eNo e < /EC n rl: Tr e d > I o tos eNo e
字 > /
< /E o tos Tre d > I C nrl: e No e
A sm l Mi o f. e . . b o t l,v ri 字 se by= c s tW b UI We C nr s e o ro o s n: >
注册该控 件后 ,在页面 中就 可 以创 建该控 件 了 .
在 制作课程 目录 、新 闻分 类等 网页 时 ,经 常会看 到一些 网站 在左 边 采 用类 似 资 源管 理器 的树 形 结构 ,
这种结构层 次清 晰、使 用 方 便 .但 这 种 结 构 在 传统 的 A P程 序 设 计 或 其 他 网络 程 序 设 计 中,通 常采 用 S JvS r t 本语 言来实 现 ,而事实 上微 软 已经 专 门提 供 了一套 I b控 件 ,其 中包 含一 个 T eVi aa ci 脚 p E We re e w树 形控件 ,可 以方便 地实 现该 功 能 .现 把本 人 开 发 A P N T 网站 时 T eVi 控 件 的 使 用方 法 总 结一 下 , S .E re e w 希望对 在网站 中使 用树形 结构 的程序 设计 人员有 所提示 .
目录树控件TreeView的使用
TreeView控件百科名片TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录。
TreeVie w控件中的各项信息都有一个与之相关的Node对象。
TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。
在建立TreeView控件后,我们可以展开和折叠、显示或隐藏其中的节点。
TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。
目录[隐藏]概述属性方法常用属性常用方法常用事件简单示例[编辑本段]概述TreeView 控件显示Node 对象的分层列表,每个Node 对象均由一个标签和一个可选的位图组成。
TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。
创建了TreeView 控件之后,可以通过设置属性与调用方法对各Node 对象进行操作,这些操作包括添加、删除、对齐和其它操作。
可以编程展开与折回Node 对象来显示或隐藏所有子节点。
Colla pse、Expand 和NodeClick 三个事件也提供编程功能。
Node 对象使用Root、Pa rent、Child、FirstSibling、Next、Previous 和LastSibling 属性。
在代码中可通过检索对Node 对象的引用,从而在树上定位。
也可以使用键盘定位。
UP ARROW 键和DOWN ARROW 键向下循环穿过所有展开的Node 对象。
从左到右、从上到下地选择Node 对象。
若在树的底部,选择便跳回树的顶部,必要时滚动窗口。
RI GHT ARROW 键和LEFT ARROW 键也穿过所有展开的Node 对象,但是如果选择了未展开的Node之后再按RIGHT ARROW 键,该Node 便展开;第二次按该键,选择将移向下一个Node。
相反,若扩展的Node 有焦点,这时再按LEFT A RROW 键,该Node 便折回。
Aspnet中Treeview控件常用属性
Aspnet中Treeview控件常用属性1.常用的几个属性和方法~Index 获取树节点在树节点集合中的位置。
~Nodes 获取分配给树视图控件的树节点集合。
~Parent 获取或设置控件的父容器。
~SelectedNode 获取或设置当前在树视图控件中选定的树节点。
~ExpandAll 展开所有树节点。
~Checked 获取或设置一个值,用以指示树节点是否处于选中状态。
~Text 获取或设置在树节点标签中显示的文本。
~Expand 展开树节点。
~Clear 清空树~Remove 从树视图控件中移除当前树节点。
以上由其他网友总结,补充:~Height 控件的高度~Width 控件的宽度~BackColor 背景颜色~BorderColor 边框颜色~BorderStyle 边框样式~BorderWidth 边框宽度~CssClass 应用于该控件的CSS类名~ExpandedImageUrl 展开时显示的节点图标~ImageUrl 未选择或展开是显示的节点图标~SelectedImageUrl 选中状态下显示的节点图标~Indent 缩进距离,只有在ShowLines设为TRUE时才生效。
~ShowLines 是否显示层级连接线~ShowPlus 是否显示+/-符号按钮~ShowToolTip 在有父节点上显示工具提示(+/-号的使用展开/关闭)。
~AccseeKey 控件使用的键盘快捷键~AutoSelect 为TRUE时,当用键盘移动节点时,自动选择新节点~AutoPostBack 当改变状态时,自动回存~Enabled 控制控件的启用状态~EnableViewState 控件是否自动保存其状态以用于往返行程~ExpandLevel 初始化控件是展开节点的层数~SelectExpands 当选中一个接点时,是否自动展开该节点~TabIndex TAB键次序~Visible 控件是否可见2.实用技巧:1)怎样点击文字(不是+/-号)即可展开(收缩)子节点将TREE的ShowT oolTip 属性设为false即可。
treeview用法
treeview用法
Treeview 是一款非常实用的 jQuery 插件,可以把结构化数据以树状表格或垂直菜单的形式显示出来,它可以帮助用户快速、方便地查找信息。
实现 Treeview 的基本步骤是:首先,引入 jQuery 的Treeview 插件的js文件和样式文件,然后,以HTML的ul/li标签来表示你的树形数据结构,然后,使用 jQuery 语法调用 Treeview 插件,就可以自动地将用ul/li标签指定的数据树状化,最后,定制 Treeview 样式和属性来更有效地显示数据。
Treeview 拥有很多强大的功能,比如,你可以自定义异步加载数据,也可以根据用户查询来动态筛选数据,可以定制树形节点的展开/收缩效果,甚至还可以为每个节点添加自定义的图标或文字。
使用 Treeview 是非常简单的,只需要明确你的需求,然后按照上面提到的步骤来完成,你就可以定制出一款优美的 Treeview 数据展开结构了。
Treeview 的优势在于可以非常有效地将复杂的数据以一种友好的方式显示出来,这样能够有效提升用户体验,极大提高交互效率。
ASP_NET中用TreeView实现对服务器目录的浏览和设置
ASP.NET中用TreeView实现对服务器目录的浏览和设置张丽,马丽(河南工业大学,河南郑州450001)摘要:在Web模式下通常需要通过浏览器浏览和设置服务器目录。
本文介绍了一种从Web页面浏览和设置服务器目录的方案,该方案在ASP.NET环境下采用TreeViewWeb控件和C#语言实现。
关键词:ASP.NET;浏览器;服务器目录;TreeView;C#中图分类号:TP303.092文献标识码:AVseingTreeviewAccomplishServerCatalogBrowseandinstellatASP.NETZHANGLi,MALi(HenanUniversityofTechnology,HenanZhengzhou450001)Keywords:ASPNET;brower;servercatalog;TreeView;C#作者简介:张丽(1979-),女,湖北省广水市人,硕士,助教,主要研究方向:软件理论与应用;马丽(1978-),女,河南省荥阳市人,大学本科,助教,主要研究方向:信息安全。
・光盘数据库与信息系统・1引言在浏览器端浏览服务器目录没有专门的控件,用户可以选择多种方式实现。
为了增强浏览效果,本文采用与在本地计算机中浏览PC文件系统中文件夹相似的方式来实现,即树形结构,使得浏览服务器文件夹如同浏览本地文件夹一样方便。
由于ASP.NET是当前比较流行的Web开发环境,在ASP.NET中可以使用TreeViewWeb控件实现树形结构。
本文介绍了如何在ASP.NET中使用TreeViewWeb控件和C#语言实现对服务器文件夹的浏览和设置。
2TreeViewWeb控件TreeViewWeb控件是2002年Microsoft发布的四种ASP.NETWeb控件之一,它可以用来显示可单击、可展开的树中的数据,为Web访问者提供熟悉的用户界面,增强了ASP.NETWeb页面。
要在ASP.NETWeb应用程序中使用TreeViewWeb控件,还必须先安装该控件,最后在ASP.NET环境中将TreeViewWeb控件添加到Web工具箱中就可以使用了。
ASP NET+TreeView树型菜单操作实例(代码调试通过)
id="addButton" runat="server" Text="添 加"></asp:Button> <asp:Button
id="editButton" runat="server" Text="修 改"></asp:Button> <asp:Button
(TreeView1.SelectedNodeIndex); int id=Int32.Parse(treenode.Target); string classname=TextBox1.Text; if(treenode.Target!=null) { OleDbConnection conn=new OleDbConnection();
runat="server"></iewc:TreeView></TD> <TD vAlign="top"> <TABLE id="Table2" cellSpacing="1"
cellPadding="1" width="100%" border="0"> <TR> <TD>节点名 <asp:TextBox
ListItem list=new ListItem(); if (ds.Tables[0].Rows[i]["depth"].ToString()=="0") { list.Text=ds.Tables[0].Rows[i]
asp.netmvc中应用treeview
mvc中应用treeview最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的控件,非常方便,但现在需要在mvc中使用树形菜单,先说明下我们对树形菜单的需求:1:需要支持CheckBox,允许对菜单项进行选择;2:当选择父菜单时,它下面的子菜单全部选中;3:当取消父菜单的选中状态时,下面的子菜单也全部取消;4:要比较方便的与MVC结合。
初步思路:思路一:jquery相关的树形菜单插件,由于项目中有应用到jquery,所以不考虑采用其它js框架的产品。
思路二: mvc相应的控件,这里指的控制就好比分页控件之类,基本思路就是扩展HtmlHelper来实现,Html逻辑一般都封闭在dll中。
经过一轮筛选后的结果:思路一:基于js的树形菜单果然有很多,最终我选择了https:///daredevel/jquery-tree,从demo展示来看,它完全能够满足我上面提到的前三个需求。
思路二:Telerik也有相应的树形菜单控件,它能够很好的结合MVC,最大特点是将View上的树形菜单数据传递给Controller很直观。
最终方案:由于上面的两个产品不能完全符合我的要求,所以结合jquery-tree以及Telerik treeview设计理念来实现自己的树形菜单是最佳选择。
jquery-tree本身只是一个基于前端的菜单,我们要想传递数据给Controller,唯一比较方便的方法就是通过ajax,但这需要开发人员有比较强的js操纵能力。
Telerik treeview,有点杀鸡用牛刀的意思,Telerik提供了一整UI解决方案,如果我们只用其中的一个功能就引入它,有些不适时宜,但我非常喜欢它给出的思路,它能很好的将View的菜单数据传递给Controller,但Telerik由于提供的是控件,我们不太方便对它的样式做修改,我们更希望能够自由的控制UI显示逻辑。
题外话:关于数据结构记的有一年,我去一家公司面试,当时估计是技术人员都不在,所以安排了一位年龄上比较大的面试官来面试我,目测应该是位级别不低的领导,当时不免有点小紧张。
ASP.NET2.0新控件TreeView控件的属性和事件
2.0新控件TreeView控件的属性和事件2.0 新控件 TreeView控件的属性和事件2007-04-05 22:42TreeView控件:以树型结构递归显⽰数据,可扩展和折叠的分⽀,节点是可导航, 可选择的,也可添加选择框。
TreeNode对象:TreeNodes(节点对象)可以通过声明⽅式,写代码⽅式或通过数据邦定⽅式添加;可以按需装载;可以嵌套⼆、关键属性TreeView控件的关键属性:CheckedNodes声明被选择的单个或多个节点ExpandDepth声明TreeView控件展开的深Nodes TreeNodeCollection类型的节点集合SelectedNode当前被选择的节点ShowCheckBoxes声明是否显⽰复选框ShwoExpandCollapse声明展开/折叠状态ShowLines声明节点间是否以线连接LevelStyles指定每个层次的节点的样式NodeStyle指定节点的默认样式RootNodeStyle指定根节点的样式LeafNodeStyle指定⼦节点的样式SelectedNodeStyle指定选定节点的样式HoverNodeStyle指定当⿏标移动到节点上⽅时的样式ImageUrl Properties指定表⽰展开/折叠的图⽚的URL路径TreeNode的关键属性:Checked标明节点上的复选框的选择状态ImageUrl标明节点上所⽤图⽚的url路径NavigateUrl当单击节点时所要导航到的url路径SelectAciton⽆导航节点被单击时所要执⾏的动作Selected标明当前节点是否被选择的节点ShowCheckBox标明当前节点是否显⽰复选框Text节点上的⽂字TreeView的事件:CheckChanged当复选框被选择或清除时所触发的事件SelectedNodeChanged当选择的节点发⽣改变时触发的事件TreeNodeCollapsed当分⽀被折叠时所触发的事件TreeNodeExpanded当分⽀被展开时所触发的事件TreeNodeDataBound当节点被绑定到数据源时所触发的事件TreeNodePopulate only fired on server if EnableClientScript=”false”注:1. ExpandDepth 的默认值是:FullyExpand,也就是全部节点展开,如果初始时想让根节点不展开,设置其值为:0 。
treeview控件用法(一)
treeview控件用法(一)TreeView控件用法详解1. 概述TreeView控件是一种常用的用户界面控件,常用于显示层次结构的数据。
它通常用于文件资源管理器、目录结构显示等场景中。
下面详细介绍TreeView控件的一些常见用法和功能。
2. 树状结构显示•树状结构:TreeView控件以树状结构的方式来显示数据,每个节点可以有多个子节点,形成层次结构。
•节点展开和折叠:用户可以通过点击节点前的加号(+)或减号(-)图标,展开或折叠节点的子节点。
•树节点图标:每个树节点都可以设置一个图标显示在节点前面,用于表示不同类型的节点。
3. 构建树•添加根节点:通过调用TreeView控件的()方法,可以在Treeview的根节点下添加子节点。
•添加子节点:通过设置节点的Nodes属性,添加子节点到指定的父节点。
4. 节点操作•插入节点:使用()方法可以在指定位置上插入一个新节点。
•删除节点:使用()方法可以删除指定节点,同时会删除节点的所有子节点。
•修改节点:通过修改节点的Text属性,可以修改节点的文本内容。
5. 节点选择和展示•选择节点:通过设置TreeView控件的SelectedNode属性,可以选中指定的节点。
•展示节点:可以通过设置节点的EnsureVisible属性,使指定节点可见(自动滚动到可见状态)。
6. 节点事件•节点点击事件:可以通过绑定TreeView控件的NodeMouseClick事件,实现对节点的点击响应。
•节点展开折叠事件:通过绑定TreeView控件的BeforeExpand 和BeforeCollapse事件,实现对节点展开和折叠的响应。
7. 其他功能•勾选框:可以通过设置节点的CheckBoxes属性为true,启用节点的勾选框功能。
•拖拽操作:可以通过设置TreeView控件的AllowDrop属性为true,实现节点的拖拽和放置操作。
8. 总结TreeView控件是一种非常实用的界面控件,它提供了树状结构的显示方式,并提供了丰富的操作和事件,能够满足复杂的层次结构数据展示需求。
treeview常用的方法
treeview常用的方法TreeView是一种在用户界面中常用的控件,它通常用于显示层次结构数据,例如文件夹结构或组织架构。
下面是TreeView控件常用的方法:1. Nodes属性,Nodes属性是TreeView控件中用于管理节点的集合。
可以通过Nodes属性对TreeView中的节点进行添加、删除、查找等操作。
常用的方法包括Add()方法用于添加新节点、Remove()方法用于移除指定节点、Clear()方法用于清空所有节点等。
2. ExpandAll()和CollapseAll()方法,ExpandAll()方法用于展开TreeView中的所有节点,而CollapseAll()方法用于折叠TreeView中的所有节点。
这两个方法通常用于对TreeView中的节点进行批量操作。
3. Find()方法,Find()方法用于在TreeView中查找指定的节点。
可以通过节点的名称、文本或者标识符进行查找,并返回匹配的节点。
4. BeginUpdate()和EndUpdate()方法,BeginUpdate()方法用于暂时挂起对TreeView控件的绘制,以提高对控件进行多次操作时的性能。
EndUpdate()方法用于恢复对TreeView控件的正常绘制。
5. SelectedNode属性,SelectedNode属性用于获取或设置当前TreeView中被选中的节点。
通过这个属性可以实现对节点的选择操作。
6. Sort()方法,Sort()方法用于对TreeView中的节点进行排序。
可以根据节点的文本或者其他属性进行升序或者降序排序。
7. GetNodeAt()方法,GetNodeAt()方法用于获取TreeView中指定位置的节点。
可以根据鼠标坐标或者控件内的特定位置来获取对应的节点。
以上是TreeView控件常用的方法,通过这些方法可以实现对TreeView中节点的增删改查、展开折叠、选择和排序等操作。
Treeview只展开一个节点,其他节点关闭
Treeview只展开一个节点,其他节点关闭 2.0 的 TreeView 控件功能虽说强大,但其客户端控制很逊色,本文将讲解 TreeView 的客户端实现原理,并实现两个个性化操作:(1) 节点的全部打开和关闭;Client Side Expand/Collapse All Nodes For 2.0 TreeView.(2) 只打开一个节点(关闭其他兄弟节点)。
Just one expanded node in 2.0 TreeView (When a client expand one node all other will collaps)用记事本打开页面源代码,可以找到一下两个脚本引用:<scriptsrc="/WebUI/WebResource.axd?d=RAQeBcDUNuP9iuS8q3tNEw 2&t=633300220640000000"type="text/javascript"></script><scriptsrc="/WebUI/WebResource.axd?d=JuTdJhq3NM8Jq_RhssAkEg2 &t=633300220640000000" type="text/javascript"></script> 将"/WebUI/WebResource.axd?d=RAQeBcDUNuP9iuS8q3tNEw2&a mp;t=633300220640000000"拷到地址栏尾,下载脚本,并以 .js 命名,另一个同样操作。
分析第二个脚本文件,可以看到TreeView的很多客户端函数,其中关键的一个TreeView_ToggleNode 就是客户端点击时触发的事件。
要想做个性化的操作,就得从TreeView_ToggleNode 事件下手。
winform如何保持TreeView节点展开和折叠的状态
foreach (TreeNode node in nodes) {
View Code
调用:
然后在给TreeView添加Nodes的前面和后面分别添加上这两个函数,例如TreeView类的实例tv,就可以使用 GetTreeNodesStatus(tv.Nodes); //更新TreeView函数 SetTreeNodesStatus(tv.Nodes); 这样就能实现TreeView的状态保持了
张星星呀极客大叔今天遇到这个问题了也没有显示只显示在右下角output窗但是直接打开编译好的就可以
winform如何保持 TreeView节点展开和折叠的状态
private Hashtable NodesStatus = new Hashtable(); private string SelectNodeFullPath = string.Empty; /// <summary> /// /// </summary> /// <param name="nodes"></param> private void GetTreeNodesStatus(TreeNodeCollection nodes) { foreach (TreeNode node in nodes) { if (node.IsExpanded) { NodesStatus[node.FullPath] = true; } else { NodesStatus.Remove(node.FullPath); } if (node.IsSelected) { SelectNodeFullPath = node.FullPath; } GetTreeNodesStatus(node.Nodes); } }
TreeView控件的展开与折叠
TreeView控件的展开与折叠在窗体中添加⼀个TreeView控件,设置CheckBox属性为True,绑定数据Archive jkj = new Archive();//⾃定义类public void Bind(){DataTable rol = jkj.GetDataTable("select rolesid,description from roles","roles");this.listBox1.DataSource = rol;this.listBox1.DisplayMember = "description";this.listBox1.ValueMember = "rolesid";this.treeView1.Nodes.Clear();DataTable mod = jkj.GetDataTable("select modelno,modelename from modelname", "modelname");foreach (DataRow mrow in mod.Rows){TreeNode mtn = new TreeNode();mtn.Text = mrow["modelename"].ToString();mtn.Tag = mrow["modelno"].ToString();this.treeView1.Nodes.Add(mtn);string sql = "select funcno,cname from funcname where modelno=" + int.Parse(mtn.Tag.ToString())+" order by funcno"; DataTable fun = jkj.GetDataTable(sql, "funcname");foreach (DataRow frow in fun.Rows){TreeNode ftn = new TreeNode();ftn.Text = frow["cname"].ToString();ftn.Tag = frow["funcno"].ToString();mtn.Nodes.Add(ftn);}}this.treeView1.ExpandAll();}private void Form1_Load(object sender, EventArgs e){Bind();//绑定数据源}// 在TreeView控件的AfterCheck事件中加⼊:private void treeView1_AfterCheck(object sender, TreeViewEventArgs e){TreeView tree = (TreeView)sender;tree.AfterCheck -= new TreeViewEventHandler(this.treeView1_AfterCheck);//折叠其他同级节点TreeNode parentNode = e.Node.Parent;if (parentNode != null){foreach (TreeNode tn in parentNode.Nodes){if (tn != e.Node)tn.Collapse();}}else{foreach (TreeNode tn in tree.Nodes){if (tn != e.Node)tn.Collapse();}}//标记该节点的所有⼦节点的选中状态与该节点⼀致foreach (TreeNode tn in e.Node.Nodes)tn.Checked = e.Node.Checked;//if (e.Node.Checked)e.Node.ExpandAll(); //如果该节点为选中,展开该节点//else// e.Node.Toggle(); //如果该节点没有选中:如果该节点处于折叠状态,则展开该节点,否则折叠它 //如果当前节点的⽗节点下的所有⼦节点都没有选中,去掉⽗节点的选中if (e.Node.Checked == false && e.Node.Parent != null){bool found = false; //⽗节点的⼦节点中⾄少有⼀个节点被选中,则found = trueforeach (TreeNode tn in e.Node.Parent.Nodes){if (tn.Checked == true){found = true;break;}}if (found == false) //没有找到任何被选中的⼦节点{e.Node.Parent.Checked = false;e.Node.Parent.Collapse();}}tree.AfterCheck += new TreeViewEventHandler(this.treeView1_AfterCheck);this.treeView1.FullRowSelect = true;////下⾯的代码作⽤是:选取⽗节点后,选取其所有⼦节点。
《treeview使用方法介绍》
《treeview使用方法介绍》建立一个窗体,在窗体上放置如下控件:Treeview 控件:名称 Treeview1; Imagelist 控件:名称 Imagelist1,并在该控件中放置三张个性图片(32×32),建立索引1、2、3;(方法:在Imagelist 控件上单击鼠标右键选择属性) Label 控件:名称分别为Lab(0)、Lab(1),Caption分别为“父节点:”、“子节点:”; Textbox 控件:名称分别为Txt(0)、Txt(1),text都为“”; commandbutton 控件:名称为系统默认,Caption分别为“添加”、“展开”、“收起”、“排序”、“删除”、“退出”; 将下列代码加入到代码框:Option ExplicitDim I As IntegerDim J As IntegerDim nodx As NodeDim CunZai As Boolean '定义变量Private Sub Command1_Click() If Txt(0).Text <> "" And Txt(1).Text <> "" Then '不允许建立零字节的父节点和子节点 CunZai = False J = TreeView1.Nodes.Count For I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在 If TreeView1.SelectedItem.Children > 0 Then If Txt(0).Text = TreeView1.Nodes(I).Text Then CunZai = True End If Next I If CunZai = True Then '若存在, 则在父节点下建立子节点 Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J, Txt(1).Text, 3) Else ,若不存在,则建立父节点和子节点 Set nodx = TreeView1.Nodes.Add(, , Txt(0).Text, Txt(0).Text, 1) Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,_ Txt(1).Text, 3) End If TreeView1.Refresh ElseIf Txt(0).Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!" '系统提示 ElseIf Txt(1).Text = "" Then MsgBox "请输入子节点名称!", vbInformation, "警告!" End IfEnd SubPrivate Sub Command2_Click() For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = True '展开所有节点 Next IEnd SubPrivate Sub Command3_Click() For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = False '收起所有节点 Next IEnd SubPrivate Sub Command4_Click() TreeView1.Sorted = True '排列顺序End SubPrivate Sub Command5_Click() If TreeView1.SelectedItem.Index <> 1 Then TreeView1.Nodes.Remove TreeView1.SelectedItem.Index '删除选定的节点 End IfEnd SubPrivate Sub Command6_Click() End '退出程序End SubPrivate Sub Form_Load() TreeView1.LineStyle =TvwTreeLines '在兄弟节点和父节点之间显示线 TreeView1.ImageList = ImageList1 '链接图像列 TreeView1.Style = tvwTreelinesPlusMinusPictureText '树状外观包含全部元素 Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1) '建立名称为"蒲子明"的父节点,选择索引为1的图像 Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3) '在"蒲子明"父节点下建立"收件箱"子节点,选择索引为3的图像 Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "发件箱", 3) '在"蒲子明"父节点下建立"发件箱"子节点,选择索引为3的图像 CunZai = FalseEnd SubPrivate Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node) Node.ExpandedImage = 2 '节点被展开时,选择索引为2的图像End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) If TreeView1.SelectedItem.Children = 0 Then '检查是否有子节点,0为无 For I = 1 To TreeView1.Nodes.Count If TreeView1.Nodes(I).Selected Then MsgBox "您选择的是:“" & TreeView1.Nodes(I).FullPath & "”子节点!" '系统提示 End If Next I End IfEnd Sub图片如下:关于treeview控件的研究心得1、关于checked属性checked属性就是在每个列项前面出现一个方框可以通过打勾来表明是否选中。
点击树节点文字展开或收缩其子节点
ADF中点击树节点文字展开或收缩其子节点运行环境:JDeveloper 11.1.2.2.0 + Oracle Database 10g Express Edition 10.2.0.1。
默认情况下,只有点击树节点的最左边的三角图标时才能展开或收缩子节点,点击树节点文字时不会展开或收缩子节点。
我们可以通过af:clientListener来实现点击树节点文字时不会展开或收缩子节点功能。
重点步骤说明:1. 为Tree组件增加ClientListenerTree组件上发生click事件时将会调用JavaScript函数:expandDiscloseNode。
<af:tree value="#{bindings.DepartmentsView1.treeModel}" var="node"selectionListener="#{myBackingBean.treeSelectionListener}" rowSelection="single" id="t1"><f:facet name="nodeStamp"><af:outputText value="#{node}" id="ot1"/></f:facet><af:clientListener method="expandDiscloseNode" type="click"/></af:tree>2. JavaScript函数:expandDiscloseNode基本逻辑:找到当前选择的节点(只选择第一个),如果该节点处于展开状态,那么收缩;反之则展开。
functionexpandDiscloseNode(event) {var tree = event.getSource();varrwKeySet = tree.getSelectedRowKeys();varfirstRowKey;for (rowKey in rwKeySet) {firstRowKey = rowKey;}if (tree.isPathExpanded(firstRowKey)) {tree.setDisclosedRowKey(firstRowKey, false);}else {tree.setDisclosedRowKey(firstRowKey, true);}}3. 运行直接点击节点文字,就可以展开或收缩其子节点。
easyuitree点击文字打开关闭菜单
easyuitree点击文字打开关闭菜单网上很多例子只有点击前面的图片才能打开或关闭菜单,自己研究了一下tree的属性,现在点击文字即可打开关闭菜单了,实现如下:[html] view plain copy1.//if(!layout_west_tree.tree('isLeaf',node.target)){//判断否是叶子节点2.//if(node.state=='closed'){//判断菜单是打开还是关闭状态3.if(node.state=='closed'&&(!layout_west_tree.tree('isLeaf', node.target))){4.$(this).tree('expand',node.target);//点击文字展开菜单5.if (node.attributes && node.attributes.url) {6.var url = '${ctx}' + node.attributes.url;7.addTab({8.url : url,9.title : node.text,10.iconCls : node.iconCls11.});12.13.}14.}else{15.if(layout_west_tree.tree('isLeaf',node.target)){16.if (node.attributes && node.attributes.url) {17.var url = '${ctx}' + node.attributes.url;18.addTab({19.url : url,20.title : node.text,21.iconCls : node.iconCls22.});23.}24.}else{25.$(this).tree('collapse',node.target);//点击文字关闭菜单26.}27.28.}。
TreeView控件实现节点拖曳功能,并更新数据库中节点的值
TreeView控件实现节点拖曳功能,并更新数据库中节点的值1、建一Access数据库test.mdb,表名myTreeView,字段为:myNodeKey 文本myNodeName 文本myParent 文本myParentPath 文本添加记录:K001 节点1 Root Root.K002 节点2 Root Root.K003 节点3 Root Root.K004 节点4 Root Root.K005 节点5 Root Root.2、新建VB工程,在“引用”中加入ADO2.6,在“部件”中加入Microsoft Windows Common Controls 5.0。
3、在窗体上添加TreeView控件,命名为TreeView1;添加TextBox控件,命名为txtNodeName;添加Image控件,命名为IconImage,并在其Picture属性中加载一个Icon图标文件。
4、在窗体代码中添加:Private Conn As ADODB.ConnectionPrivate Const TreeRootTag As String = "Root" '根节点标记Private SourceNode As Object '定义节点拖曳的源节点Private TargetNode As Object '定义节点拖曳的目标节点Private Sub Form_Load()Dim strCnt As StringDim rs As New ADODB.RecordsetDim strJudgeKey As StringDim NodeX As NodeTreeView1.LineStyle = tvwRootLinesSet NodeX = TreeView1.Nodes.Add(, tvwFirst, TreeRootT ag, "根节点")NodeX.Expanded = True'加载TreeView控件数据strCnt = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False"Set Conn = New ADODB.ConnectionConn.CursorLocation = adUseClientConn.Open strCntrs.Open "Select * from myTreeView", Conn, adOpenKeyset, adLockReadOnlystrJudgeKey = TreeRootTagDo Until rs.EOFstrJudgeKey = rs("myParent") & ""Set NodeX = TreeView1.Nodes.Add(strJudgeKey, tvwChild, rs("myNodeKey") & "", rs("myNodeName") & "")NodeX.Expanded = Truers.MoveNextLooprs.CloseSet rs = NothingEnd Sub'当鼠标点击某节点时,在窗体上显示该节点的值Private Sub TreeView1_NodeClick(ByVal myNode As Node) Dim rs As ADODB.RecordsetIf myNode.Index = 1 ThentxtNodeName = myNode.KeyElseSet rs = New ADODB.Recordsetrs.Open "Select * from myTreeView where myNodeKey='" & myNode.Key & "'", Conn, adOpenKeyset, adLockReadOnly If Not rs.EOF ThentxtNodeName = rs("myNodeName") & ""End Ifrs.CloseSet rs = NothingEnd IfEnd Sub'当按下鼠标按钮时,取得源节点Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)'将鼠标指针下的对象赋值给源节点Set SourceNode = TreeView1.HitTest(x, y)'在窗体上显示该节点的值If Not (SourceNode Is Nothing) ThenCall TreeView1_NodeClick(SourceNode)End IfEnd Sub'当移动鼠标时Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = vbLeftButton Then '如果按下鼠标左键If Not (SourceNode Is Nothing) ThenSet TreeView1.SelectedItem = SourceNode '将源节点设为选定节点(蓝底显示)TreeView1.DragIcon = IconImage '设置拖曳时的鼠标指针图标TreeView1.Drag vbBeginDrag '开始拖动操作End IfEnd IfEnd Sub'当鼠标拖动时Private Sub TreeView1_DragOver(Source As Control, x As Single, y As Single, state As Integer)Dim target As NodeDim highlight As Boolean '该变量控制拖曳的目标节点是否有效Set target = TreeView1.HitTest(x, y)If target Is TargetNode Then Exit SubSet TargetNode = targethighlight = FalseIf Not (TargetNode Is Nothing Or SourceNode Is Nothing) Then'符合以下两种情况才可拖曳:'1、源节点不等于目标节点'2、源节点不是目标节点的前辈节点If TargetNode <> SourceNode And Not isEldershipNode(SourceNode, TargetNode) Thenhighlight = TrueEnd IfEnd IfIf highlight Then'拖曳有效,目标节点突出显示(蓝底显示)Set TreeView1.DropHighlight = TargetNodeElseSet TreeView1.DropHighlight = NothingEnd IfEnd Sub'当鼠标拖放完成时(释放了鼠标按钮)Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)If Not (TreeView1.DropHighlight Is Nothing) Then '有突出显示的节点,即目标节点拖曳有效If MsgBox("确认要拖曳到此处?", vbYesNo, g_Msgtitle) = vbYes ThenSet SourceNode.Parent = TreeView1.DropHighlight '将源节点的父节点设为目标节点DragSave TreeView1.DropHighlight.Key, SourceNode.Key '更新拖曳后数据库中的变动End IfSet TreeView1.DropHighlight = Nothing '取消突出显示End IfSet SourceNode = NothingEnd Sub'更新拖曳后的数据Private Sub DragSave(ParentNodeKey As String, ChildNodeKey As String)Dim rs As New ADODB.Recordset'更新源节点的父节点路径、父节点rs.Open "Select * from myTreeView Where myNodeKey='" & ChildNodeKey & "'", Conn, adOpenKeyset, adLockOptimistic If rs.RecordCount = 0 ThenExit SubEnd Ifrs("myParent") = ParentNodeKeyrs("myParentPath") = GetFatherNodePath(ParentNodeKey, TreeView1) & "."rs.Updaters.Close'更新源节点的子节点数据rs.Open "Select * from myTreeView Where myParent='" & ChildNodeKey & "'", Conn, adOpenKeyset, adLockOptimistic Do While Not rs.EOFDragSave ChildNodeKey, rs("myNodeKey") '递归调用rs.MoveNextLooprs.CloseSet rs = NothingEnd Sub'获得父节点路径Private Function GetFatherNodePath(strFatherNodeKey As String, tree1 As TreeView, Optional strSpliteTag = ".") As StringDim Nodx As NodeSet Nodx = tree1.Nodes(strFatherNodeKey)GetFatherNodePath = strFatherNodeKeyDoSet Nodx = Nodx.ParentIf Nodx Is Nothing Then Exit DoGetFatherNodePath = Nodx.Key & strSpliteTag & GetFatherNodePathLoopEnd Function'判断节点A是否为节点B的前辈节点Private Function isEldershipNode(NodeA As Node, NodeB As Node) As BooleanIf NodeB.Parent Is Nothing ThenisEldershipNode = False '如果节点B为根节点,那么节点A不是节点B的前辈节点ElseIf NodeB.Parent.Key = NodeA.Key ThenisEldershipNode = TrueElseisEldershipNode = isEldershipNode(NodeA, NodeB.Parent) '递归调用End IfEnd Function。