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);
      }    
    }

  • 相关阅读:
    pycharm快捷键、常用设置、包管理
    【转载】TCP socket心跳包示例程序
    【转载】C++定时器实现
    金龙一卡通登陆爬取数据 免验证码 多线程 学生卡 CAUC
    python3 正方教务系统 爬取数据
    29、Python之Web框架Django入门
    28、Python之前端组件学习
    27、Python之jQuery基础
    26、Python之JavaScript进阶篇
    25、Python之JavaScript基础
  • 原文地址:https://www.cnblogs.com/zhou0818/p/10942493.html
Copyright © 2011-2022 走看看