TreeView绑定数据(包括下面的子菜单的绑定,添加菜单)

这篇博客介绍了如何在ASP.NET中实现在页面加载时动态绑定TreeView控件,包括子菜单的绑定和添加新菜单的功能。通过判断用户已有的菜单数量,确保不超过限制(3个),并使用DataSet获取数据,新建菜单模型,然后调用添加方法更新数据并重新绑定TreeView。当菜单数量超过限制时,会提示用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


protected void Page_Load(object sender, EventArgs e)

        {
            if (!IsPostBack)
            {
                BindTree();
            }
        }
        protected void BindTree()//绑定TreeView
        {
            DataTable dt = new BLL.model_Menu().GetList("").Tables[0];//获取数据源
            int s = dt.Rows.Count;


            DataView dv = new DataView(dt);
            dv.RowFilter = "[parent]=0 and [userid]=" + Session["UserID"];
            foreach (DataRowView drv in dv)
            {
                TreeNode node = new TreeNode();
                node.Text = drv["name"].ToString() + "|" + drv["id"].ToString();//显示的文本
                node.Value = drv["id"].ToString();//不显示的文本值
                node.SelectAction = TreeNodeSelectAction.None;//不引发事件
                // node.ImageUrl = "";//节点旁边显示的节点
                node.Expanded = true;//是否展开节点
                TreeView1.Nodes.Add(node);//添加到根节点
                AddReplies(dt, node);
            }
        }

        protected void AddReplies(DataTable dt, TreeNode node)
        {
            DataView dv = new DataView(dt);
            dv.RowFilter = "[parent]=" + node.Value + " and [userid]=" + Session["UserID"];//过滤node,value为上级的值
            foreach (DataRowView row in dv)
            {
                TreeNode replyNode = new TreeNode();//新建一个节点
                replyNode.Text = row["name"].ToString() + "|" + row["id"].ToString();
                replyNode.Value = row["id"].ToString();
                replyNode.Expanded = false;
                node.ChildNodes.Add(replyNode);//添加到子节点
                AddReplies(dt, replyNode);
            }

        }


/// <summary>
        /// 添加菜单
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void MenuBtn_Click1(object sender, EventArgs e)
        {
            if(Request.QueryString["id"]!=null){
            }
            //判断菜单是否有有超出(小于等于3个)
            DataSet ds = new BLL.model_Menu().GetList(string.Format(" userid={0} and parent=0", Session["UserID"]));
            if (ds.Tables[0].Rows.Count < 3)
            {
                Model.model_Menu menu = new Model.model_Menu();
                menu.name = TxtDMenu.Value;
                menu.userid = Convert.ToInt32(Session["UserID"]);
                menu.parent = 0;
                menu.addtime = DateTime.Now;
                menu.sort = 99;
                new BLL.model_Menu().Add(menu); BindTree();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "a", "<script>table();</script>", false);
            }
            else {
                BindTree();
                ScriptManager.RegisterStartupScript(this, this.GetType(), "a", "<script>table();alert('您的菜单数不能超过三个!!!');</script>", false);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值