回 帖 发 新 帖 刷新版面

主题:我想完成一个TreeView的操作,脑子想乱了,求助各位,内详

在表(Student)中有列(name)和列(class)
我想完成的是:
当Form触发Lond 时:TrerView的根是学校名称,点击"+"时,出现的是各个班级,点击某个班级的"+"是出现的是本班级的所有学生,班级的名称写在class列中,name列中是学生名称.这个程序该怎么写,我已经快崩溃了,谢谢各位了!!

allstudent(表名)
id    name       class
1     大龙     一年级一班
2     小虎     一年级二班
3     王二     一年级一班
4     李三     二年级三班
5     刘武     一年级二班
6     宋宗     二年级三班
.      .          .
.      .          .
.      .          .


-  ****学校
   - 一年级一班
   |-大龙
   |-王二
   - 一年级二班
   |-小虎
   |-刘武
   - 二年级三班
   |-李三
   |-宋宗


[em10][em10]

回复列表 (共3个回复)

沙发

TreeNode node1=new TreeNode("一年级一班",new TreeNode[]{new TreeNode("大龙"),new TreeNode("王二")});  //依此类推得node2,node3
TreeNode node2=...;
TreeNode node3=...;
TreeNode root=new TreeNode("学校",new TreeNode[]{node1,node2,node3});
treeView1.Nodes.Add(root);

板凳

思路是这样的,根据你的表结构(似乎不太符合数据库设计规范)首先建立各个班级的节点,第二步在建立每个班级节点的时候即刻加入此班所有学生节点。
伪代码如下<伪代码>

DataTable dt = <select distinct class from allstudent> //获取所有班级列表
foreach(DataRow dr in dt.Rows)
{
   TreeNode tn = new TreeNode(dr["class"].ToString());
   treeview1.<根节点>.<添加>(tn);
   DataTable dtstu = <select name from allstudent where class= dr["class"].ToString()> //获取此班所有学生
   foreach(DataRow drr in dtstu.Rows)
   {
      tn.Nodes.Add(drr["name"].ToString());
   }
}

3 楼

谢谢 jzyray,ryowu 前辈
我在做一个练习程序,目的是做一个单机版的,管理人员的程序,我对数据库一直很白吃(我真的下功夫了,但是效果不太好)。我是这样考虑的,如果数据库中人员数量不超过2万人的话,数据库使用空间不会用和多,在人名后直接加入部门名称在显示的时候一些地方会省去使用循环语句,以加快运转速度。
嘎嘎,请大虾们指点指点,我是初学者,都快疯了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册