从DB中读取数据到TreeView中

有2张表,结构如下:
表province结构:province_id   province_name   ( primary key:province_id)
表city结构:city_id,city_name,province_id       (primary key:city_id,province_id)
        SqlConnection conn  =   new  SqlConnection( " server=zzy;integrated security=sspi;database=test " );
        SqlDataAdapter da;
        DataSet ds 
=   new  DataSet();
        
private   void  Form1_Load( object  sender, EventArgs e)
        {
            readNodes();
            
this .treeView1.ExpandAll();
        }
        
private   void  readNodes()
        {
            
string  _sql  =   " select * from province " ;
            da 
=   new  SqlDataAdapter(_sql, conn);
            da.Fill(ds, 
" province " );
            DataView dvw1 
=   new  DataView(ds.Tables[ " province " ]);
            
int  i  =   0 ;
            
foreach  (DataRowView myRow1  in  dvw1)
            {
                
string  strProvinceName  =  myRow1[ " province_name " ].ToString().Trim();
                
this .treeView1.Nodes.Add( new  TreeNode(strProvinceName)); // read ParentNode
  
// --------------------------------------------------------------------------------------------------------------------------------------- //
                da  =   new  SqlDataAdapter( " select * from city where province_id=' " + myRow1[ " province_id " ].ToString().Trim() + " ' " ,conn);
                da.Fill(ds,
" city " );
                DataView dvw2 
=   new  DataView(ds.Tables[ " city " ]);
                
foreach  (DataRowView myRow2  in  dvw2)
                {
                    
string  strCityName  =  myRow2[ " city_name " ].ToString().Trim();
                    
this .treeView1.Nodes[i].Nodes.Add( new  TreeNode(strCityName)); // read ChildNode
                }
                i
++ ;
                ds.Tables[
" city " ].Clear();
                
this .treeView1.SelectedNode  =  treeView1.Nodes[ 0 ];
            }
        }


结果如下:
从DB中读取数据到TreeView中

备注:以上代码所展示的TreeView只支持2层树结构(跟我测试的Table结构有关),方法比较原始,呵呵,若要扩展可以通过递归调用来实现树型结构的结点读取!

你可能感兴趣的:(treeview)