DevExpress TreeList控件的复选框
作者:jiankunking 出处:http://blog.csdn.net/jiankunking
TreeList控件能够同一时候显示树结构和其它数据列,即在一个列上建立父子关系展开或收缩,同一时候还能够显示其它列的内容。
在TreeList中同一时候引入了 Node和 Columns概念, 第一列为树结构, 其余列为数据列, 不论什么列都可作为树结构列(即拖动到第一列)显示。
实现多级树---数据源绑定
在TreeList里加入要显示列(第一列为树结构。其它列为数据列),并指定FieldName为数据库列名
指定KeyFieldName属性为主键。ParentFieldName属性为树状分组列。注意 ParentFieldName指定的列假设为空值,树状可能会混乱(仅仅有一个根结点,其它为此节点的子结点)
用TreeList.DataSource = DataTable 绑定数据就可以
树形控件是使用频率非常高的一种控件。对于属性控件往往须要以下两个功能:
1.TreeList带有CheckBox,而且节点要有三种状态(所有的子节点都选中,所有的子节点都没选择,一部分子节点选中)。
使用DevXpress的TreeList控件非常easy实现这一功能。
设置TreeList.OptionsView.ShowCheckBoxes = true //是否显示CheckBox
设置TreeList.OptionsBehavior.AllowIndeterminateCheckState = true; //设置节点是否有中间状态,即一部分子节点选中,一部分子节点没有选中
设置这两个属性之后就实现了TreeList带有CheckBox,而且节点有三种状态。
2.选中父节点或者子节点相互影响的功能,如选择父节点选择所有子节点。绑定TreeList的两个事件AfterCheckNode和BeforeCheckNode
DevExpress的TreeList要想在节点前面显示复选框,得改动属性OptionsView->ShowCheckBoxes=True
复选框的子节点与父节点统一的规则有:
1、选择某一节点时,该节点的子节点所有选择
2、取消某一节点时,该节点的子节点所有取消选择
3、某节点的子节点所有选择时,该节点选择
4、某节点的子节点未所有选择时,该节点不选择
#region 节点选中前事件
private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e)
{
if (e.PrevState == CheckState.Checked)
{
e.State = CheckState.Unchecked;
}
else
{
e.State = CheckState.Checked;
}
}
#endregion #region 节点选中后事件
private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
{
SetCheckedChildNodes(e.Node, e.Node.CheckState);
SetCheckedParentNodes(e.Node, e.Node.CheckState);
}
#endregion #region 设置子节点状态
private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check)
{
for (int i = 0; i < node.Nodes.Count; i++)
{
node.Nodes[i].CheckState = check;
SetCheckedChildNodes(node.Nodes[i], check);
}
}
#endregion #region 设置父节点状态
private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.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;
}
}
if (b)
{
node.ParentNode.CheckState = CheckState.Indeterminate;
}
else
{
node.ParentNode.CheckState = check;
}
SetCheckedParentNodes(node.ParentNode, check);
}
}
#endregion
DevExpress TreeList控件的复选框的更多相关文章
- 获取ListControl控件中(复选框)CheckBox的状态
原文地址:http://blog.chinaunix.net/uid-20680966-id-1896376.html 1 建立测试工程 新建一个对话框工程,并添加一个CListCtrl控件 ...
- jQueryMobile控件之复选框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [asp.net] 通过JS实现对treeview控件的复选框单选控制。
前端JS代码: //识别不同的浏览器 function getTargetElement(evt) { var elem if (evt.target) { elem = (evt.target.no ...
- Devexpress TreeList控件绑定显示父子节点对像
今天一位同事咨询Devexpress TreeList控件绑定自动显示父子节点对像,但结果是不会显示带父子节点关系,而是将所有的节点作为父节点显示出来了,对像类的代码如下 public class I ...
- Devexpress TreeList控件使用
增加显示列treeList1.Columns.Add(new TreeListColumn {Caption = "城市", FieldName = "Name" ...
- Devexpress treelist 控件属性大全
属性列表 1.OptionsSelection: EnableAppearanceForcusedCell:选中的Cell的Appearance设置是否可用.默认为True: EnableAppear ...
- 为DataGridView控件实现复选功能
实现效果: 知识运用: DataGridViewCheckBoxColumn类 实现代码: private class Fruit { public int Price { get; set; } p ...
- 【SoDiaoEditor电子病历编辑器】阶段性更新--新增复选框、日期控件、表格排版支持等
转眼距离上一次v2正式发布已经过去一个半月了.github期间不定期push了二十几次,同时感谢分布在广州.福建.上海.北京的一众小伙伴,正是你们给出的建议,才让SoDiaoEditor不断完善. 我 ...
- HTML--使用单选框、复选框,让用户选择
在使用表单设计调查表时,为了减少用户的操作,使用选择框是一个好主意,html中有两种选择框,即单选框和复选框,两者的区别是单选框中的选项用户只能选择一项,而复选框中用户可以任意选择多项,甚至全选.请看 ...
随机推荐
- UML期末绘图及细节总结
往届期末绘图的题目例如以下所看到的: Read the providing materials carefully, and then do tasks. 2.1: Use Case Diagram ...
- hadoop(八) - hbase集群环境搭建
1. 上传hbase安装包hbase-0.96.2-hadoop2-bin.tar.gz 2. 解压 tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz -C /clo ...
- UVA - 1471 Defense Lines 树状数组/二分
Defense Lines After the last war devastated your country, you - as the ...
- DB-MySQL:MySQL 复制表
ylbtech-DB-MySQL:MySQL 复制表 1.返回顶部 1. MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TA ...
- Weex学习与实践(一):Weex,你需要知道的事
Weex学习与实践(一):Weex,你需要知道的事 http://coderyi.com/posts/weex1/ 1.命令行工具:weex-toolkit https://github.com/w ...
- Noip前紧急抢救
管他会不会,知道结论就好了 紧急抢救知识 斯特林数 第一类斯特林数 递推公式 \[ S[n][k]=(n-1)\times S[n-1][k]+S[n-1][k-1] \] 处理的问题是将n个数划分为 ...
- AlertDialog的使用
1.Alertdialog的几种形式: 2.第一种:简单对话框 AlertDialog.Builder localBuilder = new AlertDialog.Builder(this); lo ...
- Unity 需不需要再建Assets文件夹
不需要,默认所有文件都是在Assets文件夹下创建的,看不到是因为设置了单栏模式,开启双栏模式就能看到了.
- Mysql-slowlog
MySQL慢查询日志是MySQL提供的一种日志记录,用来记录执行时长超过指定时长的查询语句,具体指运行时间超过 long_query_time 值的 SQL 语句,则会被记录到慢查询日志中. long ...
- BZOJ2194: 快速傅立叶之二 FFT_卷积
Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring ...