工作中经常用的的是第三发控件Developer Express,相信大家都知道它的强大功能,这次用到了TreeList做了一个权限的管理,发现TreeList非常好用,大家可以看它自带的Demo就知道了,功能很多,这里我就把我用到的说出来,大家一起交流学习。
TreeList有一个KeyFieldName和ParentFieldName,这2个非常重要,只要构造一个DataTable赋值给TreeList的DataSource,这个DataTable里面要有2列是必须的,因为这2列要赋给上面说的KeyFieldName和ParentFieldName,先不说上面意思,树应该是从根节点递归、递归、一直往下递归到叶子,KeyFieldName和ParentFieldName就起到这个作用,比如:下面的一个DataTable:
KeyFieldName |
ParentFieldName |
NodeName |
NodeCode |
Others |
1 |
Null |
根节点1名称 |
根节点1编码 |
其他 |
2 |
1 |
节点1子节点名称 |
节点1子节点编码 |
其他 |
3 |
1 |
节点1子节点名称 |
节点1子节点编码 |
其他 |
4 |
Null |
根节点4名称 |
根节点4编码 |
其他 |
5 |
4 |
节点4子节点名称 |
节点4子节点编码 |
其他 |
6 |
5 |
节点5子节点名称 |
节点5子节点编码 |
其他 |
这时,如果把这个DataTable赋给TreeList的话,就会产生下面的一棵树:
下面是一个构造TreeList的数据源的简单示例:
![](http://image27.360doc.com/DownloadImg/2011/04/2511/11205580_3.gif)
/// <summary> /// 构造一棵树型表结构 /// </summary> /// <returns></returns> private DataTable CreateTreeListTable() { DataTable dt = new DataTable(); DataColumn dcOID = new DataColumn( " KeyFieldName " , Type.GetType( " System.Int32 " )); DataColumn dcParentOID = new DataColumn( " ParentFieldName " , Type.GetType( " System.Int32 " )); DataColumn dcNodeName = new DataColumn( " NodeName " , Type.GetType( " System.String " )); DataColumn dcNodeCode = new DataColumn( " NodeCode " , Type.GetType( " System.String " )); DataColumn dcOthers = new DataColumn( " Others " , Type.GetType( " System.String