首先需要明确,TreeView控件中的节点需要一个一个添加,而且先添加根节点,再添加子节点;或者说先添加父节点(上一层节点),再添加子节点(下一层节点)。当然先添加上一层节点,再添加下一层节点,并不是必须先添加根节点,再添加第二层所有节点,添加完第二层所有节点,再添加第三层所有节点,而是要求在添加子节点之前,它的父节点必须已经添加,例如:TP-自动化技术、计算机节点在添加前,必须保证父节点T-工业技术已经存在,而不用关心非父节点但 是它的上一层节点是否存在,例如A-马克思、E-军事等节点,不用考虑这些节点是否存在,或者说是否已经添加过,这些节点完全可以在TP-自动化技术、计算机节点添加后
再添加
3、 图书分类信息添加
包括TreeView控件显示内容添加以及数据库内容添加
TreeView.Nodes.Add(relative, relationship, key, text, image, selectedimage)
relative:新加入节点的相对节点的索引或键值,该节点已经存在
relationship:和relative节点的关系,简单理解关系只有两种:同级、相邻级(子级),同级中又分为四种:第一个,最后一个,前一个,后一个
key:新加入节点的键值,代表节点,比索引更好用,使用随意
text:新加入节点显示的文本
image:新加入节点显示的图标
selectedimage:新加入节点选中时显示的图标
a) 先添加根节点
第一个节点没有相对节点,所以前两个和相对节点相关的参数不需要传递,键值来说考虑到能够反映出节点添加顺序,图书分类这个分类信息在数据库中不存储,所以取它的节点编号为0,根据前面对于键值的描述,把他的键值设置为”N0”
TreeView1.Nodes.Add , ,”N0”,”图书分类”
添加完TreeView显示后,需添加数据库信息,图书分类对于图书分类信息来说,不是一个实际的分类信息,所以不需要往数据库中添加相应的信息。
b) 再添加选中节点的子节点,它的相对节点是选中节点,所以第一参数为选中节点的键值,它可以通过TreeView1.SelectedItem.key ,第二个参数是和相对节点的关系,参数值为tvwChild,第三个参数是新添加节点的键值,键值是”N”+节点编号,因为是新加入的分类信息,节点编号还不存在,所以需要计算节点编号,节点编号代表是记录号,所以首先先计算当前数据库的记录数,然后让记录数+1,便得到记录号。TreeView1.Nodes.Add TreeView1.SelectedItem.key, tvwChild,数据库记录数+1,”新节点信息”
数据库内容添加:分类编号:记录数+1
分类代码、分类名称是文本框输入的内容
父类别编号:“N”+父类别编号,mid(TreeView1.SelectedItem.key,2)
4、 图书分类信息显示
图书分类信息显示是在数据库已有分类信息的前提下,将数据库中的所有分类信息显示在TreeView控件中
首先按照类别编号升序的顺序在数据库中查询出所有的分类信息,然后逐条添加TreeView的节点
a) 根节点添加
前面已经讲过,根节点的信息只是在TreeView中显示, 而不在数据库中记录。
TreeView1.Nodes.Add , ,”N0”,”图书分类”
b) 其他节点添加
第一个参数是父节点的键值,”N”+父类别编号,父类别编号在图书分类表中有相应的字段。
第二参数是相对节点和新加入节点的关系,使用tvwChild
第三个参数是新节点的键值,”N”+类别编号,类别编号在图书分类表中有相应的字段。
第四个参数是新节点的文本,类别代码+类别名称,同样在图书分类表中有相应的字段。
5、 按照类别编号排序后的记录,保证了再添加新节点之前它的父节点已经添加过。在添加完根节点以后,必然是添加它的一个子节点,但是后面继续添加的就不一定是第二层节点,有可能是新加入节点的子节点(第三层节点)。这有赖于图书分类信息添加添加的顺序。总的来说,能够按照这样的设计在TreeView中显示图书分类表的所有信息,完全取决于分类信息的添加顺序以及数据库相应字段的设计。