DevExpress的TreeList怎样设置数据源,从实例入手
场景
winform控件-devexpress18下载安装注册以及在vs中使用:
https://blog.csdn.net/badao_liumang_qizhi/article/details/100061243
在上面已经实现devexpress的安装之后,拖拽一个treelist,然后怎样给其设置数据源。
设置数据源
1.treelist 控件可以被绑定到任何传统的数据源: bindingsource、datatable、dataview 和 dataset 对象,以及实现了 ilist、typedlist 或 ibindinglist 接口的对象。
2.要把 treelist 控件绑定到数据源,则使用 treelist.datasource 属性。
3.必须在数据源中通过两个字段实现关于父/子关系的信息。 一个字段必须存储节点的唯一 id。 另一个字段必须为每个节点都包含父节点的 id。 要为 treelist 控件指定这些字段,则使用 treelist.keyfieldname 和 treelist.parentfieldname 属性。
效果
子节点较多的树形结构效果
简单的treelist效果
注:
博客主页:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
为了存取每个节点的父级关系,新建一个节点实体类用来存取节点信息。
此实体具体的属性可以自行添加,但是如上面所说的,必须要有能标识节点间父子关系的
属性字段并且告诉treelist你设置的标识变量和父级标识变量是啥。
public class datatreenode { private string id; private string parentid; private string nodetext; public string id { get { return id; } set { id = value; } } public string parentid { get { return parentid; } set { parentid = value; } } public string nodetext { get { return nodetext; } set { nodetext = value; } } }
然后设置数据源
string fieldname = "nodetext"; string keyfieldname = "id"; string parentfieldname = "parentid"; string filename = system.io.path.getfilenamewithoutextension(string.format("{0}{1}",global.instance.currcomparedatafile,global.main_ext)); datatreenode node = new datatreenode(); node.parentid = null; node.nodetext = filename; node.id = global.instance.currcomparedatafile; global.instance.comparedata.add(node); datatreelisthelper.settreelistdatasource(this.treelist2, global.instance.comparedata, fieldname, keyfieldname, parentfieldname); this.treelist2.refreshdatasource();
这里设置数据源抽离了一个方法settreelistdatasource,在方法中
treelist.keyfieldname = keyfieldname; treelist.parentfieldname = parentfieldname; treelist.datasource = data;
这里是构建了没有层级关系的数据源,效果如上面第二个效果图那样,如果想
构造出树形层级关系,就构造出包含父子层数据结构的数据源即可。