当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 大家使用过libtiff么?在vc中如何配置和使用,急..... ......
 ·一个小问题(来者有分)    »显示摘要«
    摘要: 我在合肥工作,搞oa的(asp+sqlserver),两年工作待遇,现工资2k,想到深圳发展,工资待遇如何开。 也请版主手下留情,先谢了 ......


treeview问题

如何在C#中快速实现数据库树形结构   (sql2000)  
  能给出完整例子吗?含数据库文件的代码。  
  nextly@163.com    
 

NO.1   作者: killertang

我是这样实现的:  
              我的数据库使用ACCESS    
               
              在数据库中有两个表,一个是代码表,一个代码类别表:  
              代码表的结构:  
                             
                            ID:             编号  
                            Name:         名字  
                            Categorized:代码的类别  
                             
              代码类别表的结构:  
                              ID:     编号  
                              Name:名字  
                              Parent:上层类  
   
              主要采用类似递归的方法:  
              还有使用到TAG   属性,用来记录点的一些必要的信息,  
              以下是代码,决绝了问题记得给我分。  
               
              public   void   LoadData()  
  {  
                          treeView1.Nodes.Clear   ();  
   
  string   SqlCate="SELECT   [ID],[Name],[Parent]   FROM[Categorized]   ORDER   BY   [Parent],[ID]";  
                           
  mDs=Oper.GetResults(SqlCate);  
                           
  string   SqlCode="SELECT   [ID],[Title],[Categorized]   FROM   [Code]   ORDER   BY   [ID]";  
                           
                          mCodeDs=Oper.GetResults   (SqlCode);  
                           
  AddNoteOfParent(-1,null);  
                           
  }  
                   
  private   void   AddNoteOfParent(int   IdParent,TreeNode   PNode)  
  {  
                           
                          DataView   dv=new   DataView   (   mDs.Tables   [0]);  
   
  dv.RowFilter   ="[Parent]="   +IdParent;  
                           
  foreach(DataRowView   rv   in   dv   )  
  {        
  if   (PNode==null)  
  {  
                                          TreeNode   tn=new   TreeNode   (rv["Name"].ToString());  
  treeView1.Nodes.Add   (tn);  
                                          AddNoteOfParent(int.Parse   (rv["ID"].ToString   ()),tn);  
  AddCodeNode(int.Parse   (rv["ID"].ToString   ()),tn);  
  }  
  else  
  {  
                                          TreeNode   tn=new   TreeNode   (rv["Name"].ToString   ());  
  PNode.Nodes.Add   (tn);  
  CNodeItem   ni=new   CNodeItem   ();  
   
  ni.ID   =int.Parse   (rv["ID"].ToString   ());  
  ni.ItemType=NodeItemType.Categorize   ;  
                                          tn.Tag   =ni;  
                                           
  AddNoteOfParent(int.Parse   (rv["ID"].ToString   ()),tn);  
  AddCodeNode(int.Parse   (rv["ID"].ToString   ()),tn);  
  }  
  }  
  }  
                   
  private   void   AddCodeNode(int   IdParent,TreeNode   PNode)  
  {  
                            DataView   codedv=new   DataView   (   mCodeDs.Tables   [0]);  
    codedv.RowFilter   ="[Categorized]="   +   IdParent.ToString   ();  
  foreach(DataRowView   rv   in   codedv)  
  {  
  TreeNode   tn=new   TreeNode   (rv["Title"].ToString   ());  
                                   
  CNodeItem   ni=new   CNodeItem   ();  
   
  ni.ID   =int.Parse   (rv["ID"].ToString   ());  
  ni.ItemType   =NodeItemType.Code   ;  
                                   
                                  tn.Tag=ni;  
   
  PNode.Nodes.Add   (tn);  
  }  
  }  
                   
  private   void   treeView1_AfterSelect(object   sender,   System.Windows.Forms.TreeViewEventArgs   e)  
  {  
                           
  TreeNode   tn=treeView1.SelectedNode   ;  
  if   (tn.Tag==null)   return;    
   
  CNodeItem   ni=(CNodeItem)   tn.Tag   ;  
  string   SqlStr="";  
   
  if   (ni.ItemType   !=NodeItemType.Categorize   )  
  {  
  SqlStr="SELECT   *   FROM   [Code]   WHERE   [ID]="   +ni.ID.ToString   ();  
                                   
  DataSet   ds=Oper.GetResults   (SqlStr);    
  DataTable   dt=ds.Tables   [0];  
                                   
  if   (dt.Rows.Count   ==1)  
  {  
                                           
  DataRow   dr=dt.Rows   [0];  
  labTitle.Text   ="标题:"+tn.Text   ;  
  txtNote.Text   =dr["Note"].ToString   ();  
  txtCode.Text   =dr["Content"].ToString   ();  
                                           
  mCurrentCode.Title   =dr["Title"].ToString   ();  
  mCurrentCode.Categorized   =int.Parse   (dr["Categorized"].ToString   ());  
  mCurrentCode.Content   =dr["Content"].ToString   ();  
  mCurrentCode.KeyWord   =dr["Keyword"].ToString   ();  
  mCurrentCode.Note   =dr["Note"].ToString   ();  
  mCurrentCode.Relationship   =dr["Relationship"].ToString   ();  
                                           
  }  
  }  
                           
  else  
  {  
                                   
                                  SqlStr="SELECT   *   FROM   [Categorized]   WHERE   [ID]="   +ni.ID.ToString   ();  
  DataSet   ds=Oper.GetResults   (SqlStr);    
  DataTable   dt=ds.Tables   [0];  
                                   
  if   (dt.Rows.Count   ==1)  
  {  
           
  DataRow   dr=dt.Rows   [0];  
  mCurrentCate.Id   =int.Parse   (dr["ID"].ToString   ());  
  mCurrentCate.Name   =dr["Name"].ToString   ();  
  mCurrentCate.Note   =dr["Note"].ToString   ();  
  mCurrentCate.Parent   =int.Parse   (dr["Parent"].ToString   ());  
           
  }//end   if  
                                   
  }//end   if    
                           
   
                           
  }


    摘要: rt : <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <title>new page 1</title> </head> <body> <f......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE