递归绑定TreeView

简介:   树形菜单在平常的开发中是最常见的了,自已也练习练习,先来看两个图:                         效果图                         表结构   实现代码:    private void Form1_Load(object sender, EventArgs e)        {            this.

  树形菜单在平常的开发中是最常见的了,自已也练习练习,先来看两个图:

                  

     效果图                         表结构

 

实现代码:

   private void Form1_Load(object sender, EventArgs e)
        {
            this.BindTree(0);
        }


        private DataSet GetData(int pid)
        {
            string strCon = @"Data Source=Agony\SQLSERVER2005;Initial Catalog=sports;Integrated Security=True";
            string sql = "SELECT * FROM sport WHERE pid=" + pid;
            SqlConnection conn = new SqlConnection(strCon);
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            da.Fill(ds, "sport");
            return ds;
        }

        //绑定父节点
        private void BindTree(int pid)
        {
            DataSet ds = GetData(pid);
            if (ds.Tables["sport"].Rows.Count > 0)
            {
                for (int i = 0; i < ds.Tables["sport"].Rows.Count; i++)
                {
                    TreeNode node = new TreeNode();
                    node.Text = ds.Tables["sport"].Rows[i]["sname"].ToString();
                    node.Tag = ds.Tables["sport"].Rows[i]["id"].ToString();

                    this.treeView1.Nodes.Add(node);
                    BindChildNode(node);
                }
            }
        }

        //绑定子节点
        private void BindChildNode(TreeNode node)
        {
            TreeNode tn = node;
            int id = Convert.ToInt32(tn.Tag);
            DataSet ds = GetData(id);
            for (int i = 0; i < ds.Tables["sport"].Rows.Count; i++)
            {
                TreeNode nod = new TreeNode();
                nod.Text = ds.Tables["sport"].Rows[i]["sname"].ToString();
                nod.Tag = ds.Tables["sport"].Rows[i]["id"].ToString();


                tn.Nodes.Add(nod);
                BindChildNode(nod);
            }
        }

 

目录
相关文章
|
3月前
element plus 可选择树形组件(el-tree) 怎样一键展开/收起?实现方法详解
element plus 可选择树形组件(el-tree) 怎样一键展开/收起?实现方法详解
114 2
element plus 可选择树形组件(el-tree) 怎样一键展开/收起?实现方法详解
|
5月前
|
Web App开发 JSON 前端开发
ztree实现根节点单击事件,显示节点信息
ztree实现根节点单击事件,显示节点信息
36 0
|
C#
WPF TreeView 选择事件执行两次,获取TreeView的父节点的解决方法
1.TreeView选择事件执行两次 Very often, we need to execute some code in SelectedItemChanged depending on the selected TreeViewItem.
1100 0
|
前端开发
bootstrap-treeview 自定义添加节点方法
        bootstrap-treeview官方没有给出动态添加子节点和子节点集合的方法, 当需要点击父节点再去从后台获取其子节点时, 需要用户自定义动态加载子节点方法. 本文自定义了添加节点集合方法, 用于一次添加多个子节点.
3634 0
|
C#
WPF—TreeView无限极绑定集合形成树结构
原文:WPF—TreeView无限极绑定集合形成树结构 1.如图所示:绑定树效果图   2.前台Xaml代码:                                                                                          ...
1222 0
|
C#
【C#】wpf查找父子节点
原文:【C#】wpf查找父子节点 using System; using System.Collections.Generic; using System.
826 0