关闭

C#递归方法把数据表加载到treeview控件

发表于:2010-9-02 10:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  C#递归方法把数据表加载到treeview控件(bs和CS方法都有),先看一下数据库的结构:

  表结构如下所示:

  Num                  Name                         fatherNum       BZ
  01                   总节点                           0          ......
  0101                 第一个一级节点                    01         ......
  010101               第一个一级节点的第一个支节点       0101        ......
  010102               第一个一级节点的第二个支节点       0101        ......
  010103               第一个一级节点的第三个支节点       0101        ......
  0102                 第二个一级节点                    01         ......
  010201               第二个一级节点的第一个支节点       0102        ......
  0103                 第三个一级节点                    01         ......
  010301               第三个一级节点的第一个支节点       0103        ......
  01030101             第三个一级节点的第一个支节点      010301       ......

  使用递归方法 把数据表加载到treeview后,怎样根据treeview上的某个节点知道它在数据库表上对应的主键值?

  这是递归方法

  C/S:

  Code

publicvoidAddTree(stringfatherNum,TreeNodepNode)
{
  DataViewdvTree=newDataView(ds.Tables[0]);
  dvTree.RowFilter="[fatherNum]="+fatherNum;
  foreach(DataRowViewRowindvTree)
  {
     TreeNodeNode=newTreeNode();
     if(pNode==null)
     {  //添加根节点
       Node.Text=Row["Name"].ToString();
       treeView1.Nodes.Add(Node);
       AddTree(Row["Num"].ToString(),Node);//再次递归
     }
     else
     {  //添加当前节点的子节点
       Node.Text=Row["Name"].ToString();
       pNode.Nodes.Add(Node);
       AddTree(Row["Num"].ToString(),Node);//再次递归
     }
  }
}

DataSetds=newDataSet();
privatevoidForm2_Load(objectsender,EventArgse)
{
  SqlConnectionconn=newSqlConnection("server=.;database=test;uid=sa;pwd=;");
  SqlDataAdapterda=newSqlDataAdapter("select*fromtest",conn);
  da.Fill(ds);
  TreeNodepNode=null;
  AddTree("0",pNode);
}

  B/S方法如下:

DataSetds=newDataSet();
 protectedvoidPage_Load(objectsender,EventArgse)
 {
   if(!IsPostBack)
   {
     SqlConnectionconn=newSqlConnection("server=.;database=test;uid=sa;pwd=;");
     SqlDataAdapterda=newSqlDataAdapter("select*fromtest",conn);
     da.Fill(ds);
     TreeNodepNode=null;
     AddTree("0",pNode);
   }
 }
 publicvoidAddTree(stringfatherNum,TreeNodepNode)
 {
   DataRow[]dr=ds.Tables[0].Select("fatherNum="+fatherNum);
   if(dr.Length>0)
   {
     foreach(DataRowdindr)
     {
       TreeNodetNode=newTreeNode();
       tNode.Text=d["Name"].ToString();
       if(pNode==null)
       {
           //添加根节点
         TreeView1.Nodes.Add(tNode);
       }
       else
       {
           //添加当前节点的子节点
         pNode.ChildNodes.Add(tNode);
         tNode.Collapse();
       }
       AddTree(d["Num"].ToString(),tNode);//递归
     }
   }
 }

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号