1、从数据库中得到TABLE
2、假设需要绑定“aaa”到第一级节点的node1上,那么直接给该节点的text属性赋值为"aaa"就可以了:
TreeNode node1=new TreeNode();
node1.Text="aaa";
node1.ID="1";//只是为了标识;
TreeViewName.Nodes.Add(node1);
3、如果需要绑定“bbb”到2中产生的节点的子节点的话:
TreeNode node11=new TreeNode();
node11.Text="bbb";
node11.ID="11";
node1.Nodes.Add(node11);
4、将你从数据库中得到的值代替上边的字符串就好了。很简单的!

解决方案 »

  1.   

    首先不明白第一层和第二层之间用什么来联系?我觉得楼主给的表应该这样设计:线路表:         线路编号、线路名称
    计量装置类型表: 类型编号、类型名称、线路编号    (较原来的表多一个‘线路编号’)
    计量装置表:     装置编号、装置名称、类型编号    (较原来的表少一个‘线路编号’,因为该字段已经放到类型表中了)这样的话就好办了,把3个表的数据加载到3个DataTable中,用一个3重循环来加载。DataTableLine      // 已有数据的线路表
    DataTableCategory  // 已有数据的类型表
    DataTableDevice    // 已有数据的装置表
    TreeView1          // TreeView 控件//
    // 程序段开始,假设所有的编号字段均为字符型;若为其他类型,只需更改下面DataTable的
    // Select方法的查询语句
    //TreeNode NodeLine;      // 线路节点(第一层)
    TreeNode NodeCategory;  // 类型节点(第二层)for(DataRow rowLine in DataTableLine.Rows)   // 遍历所有的线路
    {
      //
      // 将线路节点添加到TreeView控件中
      //
      NodeLine=new TreeNode(rowLine.ItemArray[1].ToString());
      TreeView1.Nodes.Add(NodeLine);
      
      //
      // 根据当前遍历的线路表的线路编号,找出该编号下的所有类型
      //
      DataRow categories=DataTableCategory.Select("线路编号='"+rowLine.ItemArray[0].ToString()+"'");
      
      //
      // 对当前编号下的所有类型进行遍历,
      //
      for(DataRow rowCategory in categories)
      {  
         //
         // 将类型添加到线路节点下
         //
         NodeCategory=new TreeNode(rowCategory.ItemArray[1].ToString());
         NodeLine.Nodes.Add(NodeCategory);     //
         // 找出该类型下的所有装置
         //
         DataRow devices=DataTableDevice.Select("类型编号='"+categories.ItemArray[0].ToString()+"'");
         for(DataRow rowDevice in devices)
         {
            // 将节点全部添加到类型节点下
            NodeCategory.Nodes.Add(new TreeNode(rowDevice.ItemArray[1].ToString()));
         }
         
      }
    }其他说明:
             1.上面的代码是我直接回复写的,没有在VS中调试,难免有BUG;
             2.上面的效率相对来说比较低,我曾经用过的另一中方法是将3个表的数据在一个存储过程中通过一定的规则构造成一个表,这样只需用一个for()就可以完成。楼主可以试试。
      

  2.   

    刚发出去就发现一个bug,
    DataRow categories=DataTableCategory.Select("线路编号='"+rowLine.ItemArray[0].ToString()+"'");应该是
    DataRow[] categories=DataTableCategory.Select("线路编号='"+rowLine.ItemArray[0].ToString()+"'");其他的两个对Select方法的调用也要作相应的更改,将DataRow改成DataRow[]
      

  3.   

    我看了洪根的方法http://dev.csdn.net/develop/article/23/23258.shtm,重新构造一个表,不过我数据库建好了不能随便动啊,大家说应该怎么解决这个问题呢?