zoukankan      html  css  js  c++  java
  • c# winform结合数据库动态生成treeview的父节点和子节点方法和思路

    tb_food表的结构如图一:

     

    tb_foodtype表的结构如图二:

     

    //获取tb_foodtype表中的所有数据
    private void InitDataTable()
    {
      SqlConnection conn = BaseClass.DBConn.CyCon();
      SqlCommand cmd = new SqlCommand("select * from tb_foodtype", conn);
      SqlDataAdapter ada = new SqlDataAdapter(cmd);
      dt = new DataTable();
      ada.Fill(dt);
    }

    //获取tb_food表中的所有数据

    private void InitDataTable1()
    {
      SqlConnection conn = BaseClass.DBConn.CyCon();
      SqlCommand cmd = new SqlCommand("select * from tb_food", conn);
      SqlDataAdapter ada1 = new SqlDataAdapter(cmd);
       dt1 = new DataTable();
      ada1.Fill(dt1);
    }

    //添加父节点的方法
    private void BindRoot()
    {
       DataRow[] rows = dt.Select();//取根
      foreach (DataRow dRow in rows)
       {
        TreeNode rootNode = new TreeNode();
        rootNode.Tag = dRow;
        rootNode.Text = dRow["foodtype"].ToString();
        控件名.Nodes.Add(rootNode);
        BindChildAreas(rootNode);//调用添加子节点的方法
       }
    }

    //添加子节点的方法
    //递归绑定子区域
    private void BindChildAreas(TreeNode fNode)
     {
      DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
       int fAreaId = (int)dr["ID"]; //父节点ID
       DataRow[] rows1 = dt1.Select("foodty ="+fAreaId);//子区域
      if (rows1.Length == 0) //递归终止,区域不包含子区域时
      {
        return;
      }
      foreach (DataRow dRow in rows1)
      {
        TreeNode node = new TreeNode();
        node.Tag = dRow;
        node.Text = dRow["foodname"].ToString();
        //添加子节点
        fNode.Nodes.Add(node);
      }    
    }

  • 相关阅读:
    07_Go语言 ( 切片)
    06_Go语言( 数组)
    05_Go语言( 流程控制)
    04_Go语言( 运算符)
    02_Go语言(变量和常量)
    01_Go语言(环境的搭建)
    云电脑直播简单指南
    统信UOS共享打印机配置
    #插头dp#洛谷 5074 Eat the Trees
    #状压dp#洛谷 3959 [NOIP2017 提高组] 宝藏
  • 原文地址:https://www.cnblogs.com/zhou0818/p/10942493.html
Copyright © 2011-2022 走看看