c# winform结合数据库动态生成treeview的父节点和子节点方法和思路

来源:互联网 发布:如何优化标题 编辑:程序博客网 时间:2024/06/07 10:19

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();                            tvFood.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);              }        }




阅读全文
0 0