节点折叠 this.treeList1.CollapseAll();
一、简介
二、属性列表
1、OptionsSelection:
EnableAppearanceForcusedCell:选中的Cell的Appearance设置是否可用。默认为True;
EnableAppearanceForcusedRow:选中的Node的Appearance设置是否可用。默认为True
InvertSelection:设置选中风格是只应用于选中的Cell,还是应用于除选中的Cell之外的所有Cell。默认为False,即后者;
MultiSelect:是否可以选择多个Node。默认为False。
2、OptionsView:
AutoCalcPreviewLineCount:是否自动计算预览节段的高度。默认为True;
AutoWidth:是否允许列自动调整宽度;默认为True;
EnableAppearanceEvenRow:生成偶数Node时,是采用由
TreeListAppearanceCollection.EvenRow属性提供的Appearance
设置,还是采用由TreeListAppearanceCollection.Row提供的
Appearance设置。默认为False,即后者;
EnableAppearanceOddRow:生成奇数Node时,是采用由
TreeListAppearanceCollection.OddRow属性提供的Appearance
设置,还是采用由TreeListAppearanceCollection.Row提供的
Appearance设置。默认为False,即后者;
ShowButtons:是否显示展开与收缩按钮。默认为True;
ShowCloumns:是否显示列标题。默认为True;
ShowFocusedFrame:在获得焦点的Cell上,是否显示焦点框架。默认为True;
ShowHorzLines:是否显示水平线。默认为True;
ShowIndentAsRowStyle:是否用相应Node的Appearance设置来生成Tree的缩进。默认为False
ShowIndicator:是否显示Node的指示符面板。默认为True;
ShowPreview:是否显示预览节段。默认为False;
ShowRoot:是否在根Node间显示连接线。默认为True;
ShowRowFooterSummary:是否显示分组脚注。默认为False;
ShowSummaryFooter:是否显示摘要脚注。默认为False;
ShowVertLines:是否显示垂直线。默认为True;
3、SelectImageList:选中Node时,显示图片的列表;
4、StateImageList:指明Node状态的图片的列表;
三、事件
四、使用
1、 如何隐藏TreeList的列头
设置TreeListr的OptionsView的ShowColumns属性为:False
2、 如何默认展开所有的节点ExpandAll()
tlvWells.ExpandAll();
以及TreeNode.Expand = false
;
或者你可以控制展开的层数 reeView1.ExpandLevel=10; 展开10层
this.treeList.Nodes[0].ExpandAll();// 第一层下的所有接点展开
3、 如何让TreeList的每个结点高亮显示?
代码如下:
private void treeList1_CustomDrawNodeCell(object sender, DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs e) { TreeList node = sender as TreeList; if (e.Node == node.FocusedNode) { e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds); Rectangle r = new Rectangle(e.EditViewInfo.ContentRect.Left, e.EditViewInfo.ContentRect.Top, Convert.ToInt32(e.Graphics.MeasureString(e.CellText, treeList1.Font).Width + 1), Convert.ToInt32(e.Graphics.MeasureString(e.CellText,treeList1.Font).Height)); e.Graphics.FillRectangle(SystemBrushes.Highlight, r); e.Graphics.DrawString(e.CellText, treeList1.Font, SystemBrushes.HighlightText, r); e.Handled = true; } }</div>
4、 数据绑定最基本的两个属性:KeyFieldName和ParentFieldName。
(这两个属性一设置就基本上可以实现分级了)可以通过代码的编写实现,也可以直接在属性里面直接实现。这种数据库设计是比较常见的,一般数据满足树形关系就可以这样设计。绑定数据时,只需指定DataSource为对应 的DataTable,指定KeyFieldName为表主键字段,ParentFieldName为表指向主键的外键字段名。
private void BindData() { this.tlOffice.DataSource = dtOffice; tlOffice.KeyFieldName = "OfficeID"; //tlOffice.DataMember = "OfficeName"; tlOffice.Columns["OfficeName"].Caption = "局名称"; tlOffice.ParentFieldName = "ParentOfficeID"; }</div>
5、 选择某一节点时,该节点的子节点全部选择 取消某一节点时,该节点的子节点全部取消选择
哪个节点引起行为的?节点是选中还是取消选中?由此确定方法的两个参数:TreeListNode和CheckState。遍历该节点及其子孙,并将其选中状态设置为该节点的状态即可。
/// 选择某一节点时,该节点的子节点全部选择 取消某一节点时,该节点的子节点全部取消选择 /// <param name="node"></param> /// <param name="state"></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); } }</div>
上两步写好了,别忘了上面的两个方法在TreeList_AfterCheckNode里面触发:
private void tlOffice_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e) { SetCheckedChildNodes(e.Node, e.Node.CheckState); SetCheckedParentNodes(e.Node, e.Node.CheckState); }</div>
6、 某节点的子节点全部选择时,该节点选择;某节点的子节点未全部选择时,该节点不选择
/// 某节点的子节点全部选择时,该节点选择 某节点的子节点未全部选择时,该节点不选择 /// <param name="node"></param> /// <param name="check"></param> private void SetCheckedParentNodes(TreeListNode node, CheckState check) { if (node.ParentNode != null) { CheckState parentCheckState = node.ParentNode.CheckState; CheckState nodeCheckState; for (int i = 0; i < node.ParentNode.Nodes.Count; i++) { nodeCheckState = (CheckState)node.ParentNode.Nodes[i].CheckState; if (!check.Equals(nodeCheckState))//只要任意一个与其选中状态不一样即父节点状态不全选 { parentCheckState = CheckState.Unchecked; break; } parentCheckState = check;//否则(该节点的兄弟节点选中状态都相同),则父节点选中状态为该节点的选中状态 } node.ParentNode.CheckState = parentCheckState; SetCheckedParentNodes(node.ParentNode, check);//遍历上级节点 } }</div>
上两步写好了,别忘了上面的两个方法在TreeList_AfterCheckNode里面触发:
private void tlOffice_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e) { SetCheckedChildNodes(e.Node, e.Node.CheckState); SetCheckedParentNodes(e.Node, e.Node.CheckState); }</div>
7、 获取选中的复选框数据列表
private List<int> lstCheckedOfficeID = new List<int>();//选择局ID集合 /// 获取选择状态的数据主键ID集合 /// <param name="parentNode">父级节点</param> private void GetCheckedO
您可能想查找下面的文章:
- Devexpress treelist 简介
- DevExpress TreeList 常见问题解决方法
- DevExpress获取TreeList可视区域节点集合的实现方法
- DevExpress之TreeList用法实例总结
- DevExpress设置TreeList图片节点背景色的方法
- DevExpress实现TreeList向上递归获取符合条件的父节点
- DevExpress实现TreeList向上递归获取公共父节点的方法
- DevExpress实现TreeList节点互斥的方法
- DevExpress实现TreeList父子节点CheckState状态同步的方法
- DevExpress实现TreeList按条件隐藏节点CheckBox的方法