代码改变世界

C# 里TreeView绑定数据库实现分类

2009-04-23 13:25  观海看云  阅读(1274)  评论(0编辑  收藏  举报
  1. //从数据库中读取数据   
  2.             SqlConnection con = new SqlConnection("server=127.0.0.1\\sqlexpress;uid=sa;");   
  3.             con.Open();   
  4.             con.ChangeDatabase("STggggg");   
  5.             SqlCommand cmd = new SqlCommand("select * from 产品树 where NodeType='f'", con);   
  6.             //cmd.CommandType = CommandType.StoredProcedure;   
  7.             SqlDataAdapter sda = new SqlDataAdapter(cmd);   
  8.             DataSet ds = new DataSet();   
  9.             try  
  10.             {   
  11.                 sda.Fill(ds);   
  12.             }   
  13.             catch  
  14.             {   
  15.             }   
  16.             finally  
  17.             {   
  18.                 cmd = null;   
  19.                 con.Close();   
  20.             }   
  21.             //往TreeView中添加树节点   
  22.             //添加根节点   
  23.             TreeNode tn = new TreeNode();   
  24.             tn.Text = "所有产品";   
  25.             tn.Name = "0";//Name作为ID   
  26.             tn.Tag = "0";//Tag作为RootID   
  27.             tn.ImageIndex = 0;   
  28.             tn.SelectedImageIndex = 0;   
  29.             tv.Nodes.Add(tn);//该TreeView命名为tv   
  30.             tv.SelectedNode = tv.TopNode;   
  31.             //把其他节点加上去   
  32.             if (ds != null)   
  33.             {  
  1.                 foreach (DataRow dr in ds.Tables[0].Rows)   
  2.                 {   
  3.                     tn = new TreeNode();   
  4.                     tn.Text = dr["Product"].ToString();   
  5.                     tn.Name = dr["CateID"].ToString();//Name作为CateID   
  6.                     tn.Tag = dr["RootID"].ToString();//Tag作为RootID   
  7.                     tn.ImageIndex = 1;   
  8.                     tn.SelectedImageIndex = 1;   
  9.                     //判断是否为主节点   
  10.                     if (dr["CateID"].ToString() == dr["RootID"].ToString())   
  11.                     {   
  12.                         //主节点   
  13.                         tv.SelectedNode = tv.TopNode;   
  14.                     }   
  15.                     else  
  16.                     {   
  17.                         //其他节点   
  18.                         if (tv.SelectedNode.Name != dr["ParentID"].ToString())   
  19.                         {   
  20.                             TreeNode[] tn_temp = tv.Nodes.Find(dr["ParentID"].ToString(), true); //通过ParentID查找父节点   
  21.                             if (tn_temp.Length > 0)   
  22.                             {   
  23.                                 tv.SelectedNode = tn_temp[0]; //选中查找到的节点   
  24.                             }   
  25.                         }   
  26.                     }   
  27.                     tv.SelectedNode.Nodes.Add(tn);   
  28.                 }   
  29.                 //tv.ExpandAll();//展开TreeView   
  30.                 tv.SelectedNode = tv.TopNode; //最顶端节点选中   
  31.