zoukankan      html  css  js  c++  java
  • TreeView递归生成树形菜单

        主要用到递归循环获取子结点

        /// <summary>
        /// 生成根节点
        /// </summary>
        /// <param name="treeview"></param>
        protected void BindTreeView(long ID, TreeView treeview)
        {
            DataTable dt = menuLogic.GetMenu2(ID, User.Identity.Name);
            treeview.Nodes.Clear();
            DataRow[] parentrow = dt.Select("par_id=0");

            for (int i = 0; i < parentrow.Length; i++)
            {
                TreeNode rootnode = new TreeNode();
                rootnode.Text = parentrow[i]["node_name"].ToString(); //parentrow[i][3].ToString();
                rootnode.Value = parentrow[i]["ID"].ToString(); //parentrow[i][1].ToString(); 主键
                rootnode.Expanded = true;
                rootnode.Selected = false;
                rootnode.SelectAction = TreeNodeSelectAction.None;
                treeview.Nodes.Add(rootnode);
                CreateChildNode(rootnode, dt); //
            }
        }
        /// <summary>
        /// 生成子节点
        /// </summary>
        /// <param name="parentNode"></param>
        /// <param name="datatable"></param>
        protected void CreateChildNode(TreeNode parentNode, DataTable datatable)
        {
            DataRow[] rowlist = datatable.Select("par_id=" + parentNode.Value);
            for (int i = 0; i < rowlist.Length; i++)
            {
                TreeNode node = new TreeNode();
                if (datatable.Select("par_id=" + rowlist[i]["ID"].ToString().Trim()).Length > 0)
                {
                    node.Text = rowlist[i]["node_name"].ToString();
                    node.Value = rowlist[i]["ID"].ToString();
                }
                else
                {
                    node.Text = "<a href=\"javascript:;\" onclick=\"OpenUrl('" + rowlist[i]["url"].ToString().Trim() + "',this)\">" + rowlist[i]["node_name"].ToString() + "</a>";
                    node.Value = rowlist[i]["ID"].ToString();
                }
                node.Expanded = false;
                node.Selected = false;
                node.SelectAction = TreeNodeSelectAction.None;
                parentNode.ChildNodes.Add(node);
                CreateChildNode(node, datatable);  //递归调用
            }
        }

  • 相关阅读:
    诗歌
    某模拟赛
    Central Europe Regional Contest 2016
    38th Petrozavodsk Programming Camp, Winter 2020 Day 5: Jagiellonian U Contest, Sunday, February 2, 2020
    2017 ACM ICPC Asia Regional
    【Unity3D】实现云循环漂浮效果
    【Unity3D】Unity2D实现相机跟随物体移动(脚本可以挂在Camera上直接用)
    【Unity3D】2D Sprite基本动效(浮动、旋转等)实现
    【游戏算法】随机函数randN()的相互表示
    int main()
  • 原文地址:https://www.cnblogs.com/ajun/p/2657514.html
Copyright © 2011-2022 走看看