CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

求一个生成班级、学生TREEVIEW目录树的代码

楼主feier123(飞儿)2005-06-18 19:25:27 在 .NET技术 / ASP.NET 提问

有一个表,表名:一年级,有两字段:班级与学生姓名  
  班级     学生姓名  
  一班     同学A  
  一班     同学B  
  一班     同学C  
  .......  
  二班     同学名1  
  二班     同学名2  
  .......  
  现在想生成类似下面的树:  
   
  一年级  
  |  
  |____一班  
  |     |___同学A  
  |     |___同学B   
  |     |___同学C  
  |  
  |_____二班  
        |___同学1  
        |___同学2  
   
  实际的表中有若干班级,每班有数十学生.  
  在ASP.NET中用C#怎么生成这个树?求完整具体代码。 问题点数:100、回复次数:9Top

1 楼fancyf(凡瑞)回复于 2005-06-18 19:55:26 得分 70

按照你的要求给你写好了  
   
  protected   Microsoft.Web.UI.WebControls.TreeView   tvGrade;  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  TreeNode   tnGrade   =   new   TreeNode();  
  tnGrade.Text   =   "一年级";  
  tnGrade.Expanded   =   true;  
  GenerateGrade(tnGrade.Nodes);  
  this.tvGrade.Nodes.Add(tnGrade);  
  }  
   
  private   void   GenerateGrade(TreeNodeCollection   tnc)  
  {  
  SqlConnection   conn   =   null;  
  SqlDataReader   dr   =   null;  
   
  try  
  {  
  conn   =   new   SqlConnection("Server=(local);Database=Northwind;uid=sa;password=sa");  
  SqlCommand   cmd   =   new   SqlCommand("SELECT   DISTINCT   班级   FROM   一年级",   conn);  
  conn.Open();  
  dr   =   cmd.ExecuteReader();  
  while   (dr.Read())  
  {  
  TreeNode   tnClass   =   new   TreeNode();  
  tnClass.Text   =   dr.GetString(0);  
  tnClass.Expanded   =   true;  
  tnc.Add(tnClass);  
  }  
  dr.Close();  
   
  foreach   (TreeNode   tnClass   in   tnc)  
  {  
  cmd.CommandText   =   "SELECT   学生姓名   FROM   一年级   WHERE   班级='"   +   tnClass.Text   +   "'";  
  dr   =   cmd.ExecuteReader();  
  while   (dr.Read())  
  {  
  TreeNode   tnStudent   =   new   TreeNode();  
  tnStudent.Text   =   dr.GetString(0);  
  tnClass.Nodes.Add(tnStudent);  
  }  
  dr.Close();  
  }  
  }  
  finally  
  {  
  if   (dr   !=   null)  
  {  
  dr.Close();  
  }  
  if   (conn   !=   null)  
  {  
  conn.Close();  
  }  
  }  
  }Top

2 楼LaoDai_Net(『老代』)回复于 2005-06-18 20:02:04 得分 0

fancyf(凡瑞)   动作够快咯,HOHO……  
  我就不贴了,顶一下Top

3 楼gdami(糖米)回复于 2005-06-18 20:29:01 得分 0

ft。   好人太多了。Top

4 楼zmacro(zmacro)回复于 2005-06-18 20:38:47 得分 0

网上搜索一下就有了!Top

5 楼zl194(Edgar)回复于 2005-06-19 00:53:36 得分 0

真行,建议以后高收给思路,不要给原码。Top

6 楼litp(天道酬勤)回复于 2005-06-19 09:02:23 得分 0

只能up了Top

7 楼forpromise(小伤)回复于 2005-06-19 09:19:40 得分 0

思路提供更好  
  upTop

8 楼a2323(吃)回复于 2005-06-19 10:00:46 得分 20

用我的吧,   不存在循环     只遍历一次数据库  
   
  private   void   Ref()  
  {//     SELECT   ID,   Name,   Address,   City,   Fax   FROM   Customer   ORDER   BY   City,   Name,   ID  
  this.tv1.Nodes.Clear();  
  string   ntext   =   "";  
  int   i   =   0;  
   
  this.cmdSql.Connection.Open();  
  System.Data.SqlClient.SqlDataReader   rd   =   this.cmdSql.ExecuteReader();  
  while(   rd.Read()   )  
  {  
  if(   rd["City"].ToString()   !=   ntext   )  
  {  
  ntext   =   rd["City"].ToString();  
  TreeNode   fnode   =   new   TreeNode(ntext);  
  this.tv1.Nodes.Add(fnode);  
  i++;  
  }  
  //上面的条件判断在第一个部门和每次遇到新部门的时候执行  
  if(   rd["City"].ToString()   ==   ntext   )  
  {  
  TreeNode   snode   =   new   TreeNode(rd["Name"].ToString());  
  snode.Tag   =   rd["ID"].ToString();  
  this.tv1.Nodes[i-1].Nodes.Add(snode);  
  }  
  }  
  rd.Close();  
  this.cmdSql.Connection.Close();  
   
  this.NoDo();  
  }Top

9 楼codeangel(http://www.wSoft.Net)回复于 2005-06-19 11:18:27 得分 10

真够快的  
  还是用我的吧  
  表建的时候用递归,可以设计无限级  
  sNo,   sName,   parentNo  
  然后用下面的  
  调用  
  public   void   LoadTree(Microsoft.Web.UI.WebControls.TreeView   tvwStudents,string   strPersonNo)  
  {  
  IInitStudentsTree(tvwStudents.Nodes,"0");  
   
  }  
   
  //功能树//建树的基本思路是:从根节点开始递归调用显示子树    
   
   
  private   void   InitStudentsTree(TreeNodeCollection   Nds,string   strParentNo)  
  {  
   
  DataView   dv=new   DataView();  
  TreeNode   tmpNd;  
  dv.Table=man.GetDs("tree","Select   *   From   students").Tables["tree"];  
  dv.RowFilter="ParentNo='"   +   strParentNo   +   "'"   ;  
  foreach(DataRowView   drv   in   dv)  
  {  
  tmpNd=new   TreeNode();  
  tmpNd.ID=drv["sNo"].ToString();  
  tmpNd.Text=drv["sName"].ToString();  
  tmpNd.ImageUrl   =   "../../images/icon/Function.bmp";  
  Nds.Add(tmpNd);  
  tmpNd.Expanded=true;  
  tmpNd.CheckBox   =true;  
  InitStudentsTree(tmpNd.Nodes,tmpNd.ID);  
  }  
  }Top

相关问题

  • 一次性生成TreeView目录树的问题
  • 目录树(TREEVIEW)如何实现便历?
  • MSDN左边目录树中Loading...是如何生成的
  • 求一段递归生成目录树的sql
  • 如何得到TreeView控件的完整目录树???
  • !!! 如何用 [VB].[TreeView] 做一个目录树 !!!
  • 急!!!!关于用TREEVIEW建立目录树的问题!!!!!!
  • 高手帮忙 想用js生成客户端的文件目录树
  • 目录树
  • 求一递归程序,请大家帮帮我,涉及到TreeView目录树!

关键词

  • 学生
  • tv
  • tnclass
  • 班级
  • tngrade
  • 同学
  • treenode
  • cmdsql
  • snode
  • ntext

得分解答快速导航

  • 帖主:feier123
  • fancyf
  • a2323
  • codeangel

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo