DevExpress TreeList使用教程之绑定多级树
DevExpress TreeList使用教程之绑定多级树
概述:TreeList控件可以同时显示树结构和其他数据列,即在一个列上建立父子关系展开或收缩,同时还可以显示其他列的内容。在TreeList中同时引入了 Node和 Columns概念, 第一列为树结构, 其余列为数据列, 任何列都可作为树结构列(即拖动到第一列)显示
TreeList控件可以同时显示树结构和其他数据列,即在一个列上建立父子关系展开或收缩,同时还可以显示其他列的内容。
在TreeList中同时引入了 Node和 Columns概念, 第一列为树结构, 其余列为数据列, 任何列都可作为树结构列(即拖动到第一列)显示。
实现多级树---数据源绑定
在TreeList里添加要显示列(第一列为树结构,其他列为数据列),并指定FieldName为数据库列名
指定KeyFieldName属性为主键,ParentFieldName属性为树状分组列。注意 ParentFieldName指定的列如果为空值,树状可能会混乱(只有一个根结点,其他为此节点的子结点)
用TreeList.DataSource = DataTable 绑定数据即可
(以下内容为转载)多选框的三种状态
树形控件是使用频率很高的一种控件。对于属性控件往往需要下面两个功能
1.TreeList带有CheckBox,并且节点要有三种状态(所有的子节点都选中,所有的子节点都没选择,一部分子节点选中)。使用DevXpress的TreeList控件很容易实现这一功能。
设置TreeList.OptionsView.ShowCheckBoxes = true //是否显示CheckBox
设置TreeList.OptionsBehavior.AllowIndeterminateCheckState = true; //设置节点是否有中间状态,即一部分子节点选中,一部分子节点没有选中
设置这两个属性之后就实现了TreeList带有CheckBox,并且节点有三种状态。
2.选中父节点或者子节点相互影响的功能,如选择父节点选择所有子节点。绑定TreeList的两个事件AfterCheckNode和BeforeCheckNode
实现功能的代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e){SetCheckedChildNodes(e.Node, e.Node.CheckState);SetCheckedParentNodes(e.Node, e.Node.CheckState);}private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e){e.State = (e.PrevState == CheckState.Checked ? CheckState.Unchecked : CheckState.Checked);}/// <summary>/// 设置子节点的状态/// </summary>/// <param name="node"></param>/// <param name="check"></param>private void SetCheckedChildNodes(TreeListNode node, CheckState check){for (int i = 0; i < node.Nodes.Count; i++){node.Nodes[i].CheckState = check;SetCheckedChildNodes(node.Nodes[i], check);}}/// <summary>/// 设置父节点的状态/// </summary>/// <param name="node"></param>/// <param name="check"></param>private void SetCheckedParentNodes(TreeListNode node, CheckState check){if (node.ParentNode != null){bool b = false;CheckState state;for (int i = 0; i < node.ParentNode.Nodes.Count; i++){state = (CheckState)node.ParentNode.Nodes[i].CheckState;if (!check.Equals(state)){b = !b;break;}}node.ParentNode.CheckState = b ? CheckState.Indeterminate : check;SetCheckedParentNodes(node.ParentNode, check);}} |
VB.net语言代码如下
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
Private Sub trlContact_AfterCheckNode(ByVal sender As System.Object, ByVal e As DevExpress.XtraTreeList.NodeEventArgs) Handles trlContact.AfterCheckNodeSetCheckedChildNodes(e.Node, e.Node.CheckState)SetCheckedParentNodes(e.Node, e.Node.CheckState)End Sub'设置子结点的状态Private Sub SetCheckedChildNodes(ByVal node As TreeListNode, ByVal check As CheckState)For i As Integer = 0 To node.Nodes.Count - 1node.Nodes(i).CheckState = checkSetCheckedChildNodes(node.Nodes(i), check)NextEnd Sub'设置父结点的状态Private Sub SetCheckedParentNodes(ByVal node As TreeListNode, ByVal check As CheckState)If node.ParentNode Is Nothing = False ThenDim b As Boolean = FalseDim state As CheckStateFor i As Integer = 0 To node.ParentNode.Nodes.Count - 1state = node.ParentNode.Nodes(i).CheckStateIf check.Equals(state) = False Thenb = Not bExit ForEnd IfNextIf b Thennode.ParentNode.CheckState = CheckState.IndeterminateElsenode.ParentNode.CheckState = checkEnd IfSetCheckedParentNodes(node.ParentNode, check)End IfEnd SubPrivate Sub trlContact_BeforeCheckNode(ByVal sender As System.Object, ByVal e As DevExpress.XtraTreeList.CheckNodeEventArgs) Handles trlContact.BeforeCheckNodeIf e.PrevState = CheckState.Checked Thene.State = CheckState.UncheckedElsee.State = CheckState.CheckedEnd IfEnd Sub |
DevExpress TreeList使用教程之绑定多级树的更多相关文章
- Devexpress TreeList控件绑定显示父子节点对像
今天一位同事咨询Devexpress TreeList控件绑定自动显示父子节点对像,但结果是不会显示带父子节点关系,而是将所有的节点作为父节点显示出来了,对像类的代码如下 public class I ...
- DevExpress TreeList控件的复选框
作者:jiankunking 出处:http://blog.csdn.net/jiankunking TreeList控件能够同一时候显示树结构和其它数据列,即在一个列上建立父子关系展开或收缩,同一时 ...
- 如何让DevExpress TreeList的每个结点高亮显示?
概述:如何让DevExpress TreeList的每个节点高亮显示? 如何让DXperience TreeList的每个节点高亮显示? 效果如下: private void treeList1_Cu ...
- jasonTree多选多级树控件
jasonTree1.0 jasonTree多选多级树控件(名字是自己取),用于友好的展示树形结构的数据,并可以多选,传统的做法是在一个select的下拉框中显示一个可折叠的树结构,公司的需求人员这种 ...
- How to easily create popup menu for DevExpress treelist z
http://www.itjungles.com/how-to-easily-create-popup-menu-for-devexpress-treelist.html Adding popup m ...
- Android 实现自己定义多级树控件和全选与反选的效果
博文開始之前,首先要感谢大牛:(lmj623565791),本博文是在其博文http://blog.csdn.net/lmj623565791/article/details/40212367基础上进 ...
- WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树)
原文:WPF 资源(StaticResource 静态资源.DynamicResource 动态资源.添加二进制资源.绑定资源树) 一.WPF对象级(Window对象)资源的定义与查找 实例一: St ...
- 多级树的深度遍历与广度遍历(Java实现)
目录 多级树的深度遍历与广度遍历 节点模型 深度优先遍历 广度优先遍历 多级树的深度遍历与广度遍历 深度优先遍历与广度优先遍历其实是属于图算法的一种,多级树可以看做是一种特殊的图,所以多级数的深/广遍 ...
- c# winform devexpress TreeList过滤和绑定
/// <summary> /// 模糊查询 /// </summary> /// <param name="str"></param&g ...
随机推荐
- Codeforces Round #274 (Div. 2) Riding in a Lift(DP 前缀和)
Riding in a Lift time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- Linux命令之locate
locate [选项] [pattern] 在mlocate数据库中搜索条目.配合数据库缓存快速查看文件相关位置. locate命令和find -name功能差不多,但是比find搜索要快.因为fin ...
- shell 倒引号
`command` 倒引号 (backticks) 在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行.要处理这种情况,我们得用倒单引号来做. fdv=`date +%F ...
- 【BZOJ 4025】 (CDQ?还是整体二分?+并查集及它的恢复操作)
4025: 二分图 Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考 ...
- luogu P1002 过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...
- luogu P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- 全网第二好懂的FFT(快速傅里叶变换)
声明:本FFT是针对OI的.专业人员请出门左拐. Ⅰ前言 很久以前,我打算学习FFT. 然而,算法导论讲的很详细,却看不懂.网上博客更别说了,什么频率之类的都来了.我暗自下了决心:写一篇人看得懂的FF ...
- 【点分治】【FFT】CDOJ1562 Amaz1ng Prime
统计路径的时候,显然用母函数的思想,可以用FFT来方便统计. 注意!要减去路径两个端点相同的情况!然后再除以二!这样防止重复. 还有就是说啊,点分治的正确姿势还是应该用所有子树的答案减去各个子树分别的 ...
- cookie和localStorage、sessionStorage的区别
先来讲讲localStorage吧,我最初接触localStorage,是听一个同学说他在做项目的过程中用到过这个.但是我自己也用到过的,就是在学习React的时候,在做一个小demo,这个demo简 ...
- KNN算法实现手写数字
from numpy import * import operator from os import listdir def classify0(inX, dataSet, labels, k): d ...