asp TreeView导航栏结合sqlserver数据库动态构建 用于权限管理

在一次项目开发中,客户要求用三级导航栏,网上框架大部分都是二级,layui2.0框架中已经有了,并没有开源,其他都是用jQuery构建json格式数据,结合bootstrap或者easyui,本文方法使用递归解决,直接源码!

数据库  表名 t_auth

aidanameapid
1一级目录0
11二级目录1
12二级目录1
111三级目录11
112三级目录11
121三级目录12
122三级目录12
2一级目录0
21二级目录2
22二级目录2
3一级目录0

 

1.前端

<form runat ="server"> 
     <asp:TreeView runat="server" ID="Tree"></asp:TreeView>
</form>

2.后台

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class treeviewss : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Menu();

    }

    public void Menu()
    {
        DataSet ds = sqlHelper.getdataSet("select * from t_auth");
        DataTable dt = ds.Tables[0];

        DataRow[] children_node = dt.Select("apid = " + 0); //找到node的所有的子节点
        //SortedList sl = new SortedList();

        for (int i = 0; i < children_node.Length; i++)
        {
            TreeNode node = new TreeNode();
            node.Text = children_node[i]["aname"].ToString();
            node.Value = children_node[i]["aid"].ToString();
            //sl.Add(node.Value, node);
            Tree.Nodes.Add(node);

            int apid = int.Parse(node.Value);
            DataRow[] children_node_son = dt.Select("apid = " + apid); //找到node的所有的子节点
            getChildNode(children_node_son, apid,node,dt);

        }  
        
    }

    private static void getChildNode(DataRow[] children_node_son, int apid, TreeNode node, DataTable dt)
    {      
        for (int i = 0; i < children_node_son.Length; i++)
        {   
            //依次将每一个子节点放入到node的children中 
            TreeNode node_son = new TreeNode();
            node_son.Value = children_node_son[i]["aid"].ToString(); ; //然后获得子节点的子节点 
            node_son.Text = children_node_son[i]["aname"].ToString();

            int apidson = int.Parse(node_son.Value);
            DataRow[] children_node_sons = dt.Select("apid = " + apidson); //找到node的所有的子节点

            if(children_node_sons.Length == 0)
            {
                node_son.Target = "frmright";
                node.ChildNodes.Add(node_son);
            }
            else
            {
                node.ChildNodes.Add(node_son);
                int apidsons = int.Parse(node_son.Value);
                DataRow[] children_node_sonss = dt.Select("apid = " + apidsons); //找到node的所有的子节点
                getChildNode(children_node_sonss, apidsons,node_son,dt);

            }
        }
    }  
}

3 效果图

动态导航栏

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值