65.9K
CodeProject 正在变化。 阅读更多。
Home

高级 TreeView v1.6

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (67投票s)

2010年3月8日

CPOL

6分钟阅读

viewsIcon

183559

downloadIcon

8945

简单但功能丰富的 TreeView 控件。

引言

本文介绍了JavaScript开发的TreeView控件的使用。正如大家可能都熟悉.NET Framework提供的ASP.NET TreeView控件一样,该控件实际上试图在编码风格上模仿它。因此,那些使用过ASP.NET TreeView控件的开发人员会发现它很容易实现。

实际上,有很多此类控件可以免费使用,但我总是觉得使用我自己开发的控件更方便、更顺手。

screenshotv15.png

特点
  • 语法简单易懂
  • 易于配置
  • 不依赖于其他库
  • 交互式属性和操作事件
  • 线条显示/隐藏选项
  • 多种线条样式可供选择
  • 使用箭头键导航(效果极佳!!!)1.2
  • 内部维护表格结构1.5
  • 内置AJAX请求支持 1.6
  • 主题支持
  • 有用的属性
  • 跨浏览器支持
  • 节点更新指示支持(最适合AJAX实现)
  • 支持HTML(扁平化UL,LI)和JSON数据源1.5
  • 可编辑节点文本1.5
  • 支持转换为JSON1.5
  • 支持转换为XML1.6

使用控件

使用此控件就像使用.NET TreeView控件一样简单。该控件包含两个对象:TreeViewTreeNode
以下示例代码说明了简单的用法

var TreeView1 = new TreeView();
TreeView1.SetContainer('divTreeView');
TreeView1.PathSeparator = '\\'; 
         
var nodeFevorites = TreeView1.Nodes.Add1('IE Fevorites', 'IE Fevorites');
         
var nodeCodeProject = new TreeNode('Code Project');
nodeCodeProject.SetNavigationURL('https://codeproject.org.cn/Members/Navnath-R-Kale');
nodeCodeProject.SetImageURL('images/codeproject.JPG');
         
nodeFevorites.ChildNodes.Add(nodeCodeProject);
nodeFevorites.ChildNodes.Add(new TreeNode
	('Google','Google','http://www.google.co.in','_target'));
         
TreeView1.BeforeExpand = function(sender, e){
    if(e.ChildNodes.length == 1 && e.ChildNodes[0].Value == '#'){
        e.BeginUpdate();
        e.ChildNodes.Clear(); 
        //Node processing.... 
    };
            
    return true;
};
         
TreeView1.SelectedNodeChanging = function(sender, e){
    //Some checking on node sent 'e' as parameter.
    //Return true to process node selection else false to stop selection node
    return true;
};

TreeView 成员

构造函数

名称 描述
树视图 初始化TreeView对象的新的实例

方法

名称 描述
CSSName已更改 1.5 获取或设置用于树视图控件的CSS类名称(默认为treeview)。将其用作主题功能
SelectedValuePath 返回当前选中节点的路径值
ExpandAll 展开所有树节点
CollapseAll 折叠所有树节点
FindNode 从提供的路径值返回节点
ShowLines 获取或设置一个值,该值指示是否在treeview控件的树节点之间绘制线条
LineStyle 获取或设置treeview控件的线条样式
Visible 获取或设置一个值,该值指示控件及其所有子控件是否可见
SetContainer新增 1.2 设置包含treeview控件的对象
Container已更改 1.2 获取包含treeview控件的对象
ToJSON新增 1.5 获取整个treeview的JSON对象
ToXML新增 1.6 获取整个treeview的XML格式字符串
BeginRequest新增 1.6 启动TreeView控件的异步请求

属性

名称 描述
PathSeparator 获取或设置树节点路径使用的分隔符string(默认为\
ToggleOnSelect 获取或设置启用选中节点时切换展开/折叠的值
SelectedNode 获取或设置treeview控件中当前选中的树节点
节点 获取分配给treeview控件的树节点集合。请参阅TreeNode数组对象详情。
UpdateImageURL 获取或设置用于显示节点更新的图像URL的值
EnableKeyNavigation新增 1.2 启用或禁用通过箭头键导航所有节点。此属性可以被单个节点通过其AllowKeyNavigation属性覆盖。
EditLabel新增 1.5 获取或设置一个值,该值指示树节点的标签文本是否可编辑

事件

名称 描述
SelectedNodeChanging 在选中节点之前发生
SelectedNodeChanged 在选中节点之后发生
BeforeCollapse 在折叠树节点之前发生
BeforeExpand 在展开树节点之前发生
AfterCollapse 在折叠树节点之后发生
AfterExpand 在展开树节点之后发生
BeforeLabelEdit新增 1.5 在编辑树节点标签文本之前发生
AfterLabelEdit新增 1.5 在编辑树节点标签文本之后发生
EndRequest新增 1.6 检索通过BeginRequest方法发送的请求的响应

扩展成员

名称 描述
ParseHTML已更改 1.5 此方法调用接受UL元素作为数据源,然后将其解析为新的treeview对象。
ParseJSON新增 1.5 此方法调用接受JSON对象作为数据源,然后将其解析为新的treeview对象。
ParseXML新增 1.6 此方法调用接受XML字符串或XML DOC对象作为数据源,然后将其解析为新的TreeView对象。

TreeNode 成员

构造函数

名称 描述
TreeNode 初始化TreeNode对象的新的实例

方法

名称 描述
TreeView新增 1.5 获取树节点所属的父treeview
IsExpanded 获取一个值,该值指示树节点是否处于展开状态
GetNavigationURL已更改 1.5 获取节点单击时导航到的URL
GetTarget已更改 1.5 获取用于显示与节点关联的网页内容的窗口或框架
SetNavigationURL 设置节点导航URL和目标,以便在单击时导航到提供的URL
SetTarget新增 1.5 设置节点目标,以便在单击时导航到提供的URL
SetImageURL 设置节点的图像
Select 选择节点
IsSelected 获取一个值,该值指示树节点是否处于选中状态
ValuePath 获取从根节点到当前节点的路径
Toggle 在节点展开和折叠状态之间切换当前状态
展开后 展开节点
Collapsed 折叠节点
查找 从提供的路径值查找节点。可以调用它来查找子节点。
BeginUpdate 此方法使用treeview控件的UpdateImageURL属性指示节点正在更新。请参阅提供的快照中的文件夹2.1.2(使用begin update方法)。
EndUpdate 此方法在调用BeginUpdate()后显示节点的正常图像
信号强度 获取树节点在TreeView控件中的零基深度
Index新增 1.2 获取节点级别上树节点的零基索引
BeginEdit新增 1.5 启动树节点标签的编辑
CancelEdit新增 1.5 取消树节点标签的编辑
EndEdit新增 1.5 结束树节点标签的编辑
IsEditing新增 1.5 如果节点处于编辑模式,则返回true
WordWrap新增 1.5 获取或设置环绕带空格的长节点文本的值
SetText新增 1.5 设置节点文本
SetValue新增 1.5 设置节点的值
ToJSON新增 1.5 获取包含子节点的整个节点的JSON对象
ToXML新增 1.6 获取包含子节点的整个节点的XML格式字符串

属性

名称 描述
文本 获取或设置在树节点标签中显示的文本
获取或设置一个非显示的、用于存储关于节点的任何附加数据的任何值
ChildNodes 获取分配给treeview控件的树节点集合。请参阅TreeNode数组对象详情。
Parent 获取当前节点的父节点
AllowKeyNavigation新增 1.2 启用或禁用通过箭头键导航节点

扩展成员

名称 描述
ParseJSON新增 1.5 此方法调用接受JSON对象作为数据源,然后将其解析为新的treenode对象。
ParseXML新增 1.6 此方法调用接受XML格式字符串或XML DOC对象作为数据源,然后将其解析为新的TreeNode对象。

TreeNode 数组

AddAdd1AddAtAddAt1RemoveRemoveAt方法允许您从数组中添加和删除单个树节点。Clear方法从数组中删除所有节点。

更新:非常感谢大家的反馈和建议。我重新组织了此控件,并添加了许多可能引起您兴趣的内容。欢迎更多建议。:) 如果您喜欢,请投票并评论。

历史

  • 2010年3月8日 – 版本1.0发布
    • 首次发布
  • 2010年3月14日 – 版本1.2发布
    • 添加了键盘导航支持
    • 添加了更多事件和属性
    • 修复了次要UI问题
  • 2010年4月5日 – 版本1.5发布
    • 代码优化
    • 添加了节点标签编辑功能
    • 添加了更多关于主题的示例
    • 将内部结构从ULLI更改为table元素
    • 添加了更多事件和属性
    • 修复了次要UI问题
  • 2010年4月9日 – 版本1.6发布
    • 添加了XML数据源支持
    • 添加了内置Ajax请求支持
    • 添加了更多事件和属性
© . All rights reserved.