左边导航(一层级,二层级,三层级,四层级)

aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="left.aspx.cs" Inherits="DigitalCampus.Web.Page.left" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>栏目</title>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <link href="css/left.css" rel="stylesheet" type="text/css" />

    <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>

    <script type="text/javascript" src="js/icons.js"></script>

    <script type="text/javascript" src="js/function.js"></script>

</head>

<body>

    <form id="form1" runat="server">

    <!-- 背景层DIV -->

    <div class="div_documentbg" id="div_documentbg">

    </div>

    <script language="javascript" type="text/javascript">

        ShowDocumentDivBG();

    </script>

    <div id="divMenu" class="left_menu" style="overflow: auto;">

        <%=Leftmenu %>

    </div>

    </form>

    <script language="javascript" type="text/javascript">

        CloseTipsBG();

        $(function () {

            $(".menu_f").click(function () {

                $("ul.s").slideUp(400)

                if ($(this).next("ul.s").css("display") == "none") {

                    $(this).next("ul.s").slideDown(400);

                }

                else {

                    $(this).next("ul.s").slideUp(400);

                }

});

if ($("ul.t")) {

                $(".menu_s").click(function () {

                    $("ul.t").slideUp(400)

                    if ($(this).next("ul.t").css("display") == "none") {

                        $(this).next("ul.t").slideDown(400);

                    }

                    else {

                        $(this).next("ul.t").slideUp(400);

                    }

                    //$(this).next("ul.t").slideDown(400);

                });

            }

if ($("ul.ft")) {

                $(".menu_t").click(function () {

                    $("ul.ft").slideUp(400)

                    if ($(this).next("ul.ft").css("display") == "none") {

                        $(this).next("ul.ft").slideDown(400);

                    }

                    else {

                        $(this).next("ul.ft").slideUp(400);

                    }

                    //$(this).next("ul.ft").slideDown(400);

                });

            }

        })

</script>

</body>

</html>

aspx.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data;

using DigitalCampus.Common;

using DigitalCampus.Web.Common;

using DigitalCampus.DBUtility;

using System.Text;

namespace DigitalCampus.Web.Page

{

    public partial class left : System.Web.UI.Page

    {

        protected int i = 0;

        protected string Leftmenu = String.Empty;

        protected string UserID = String.Empty;

        protected string siteMap = String.Empty;

        protected string showDivMenu = "1";

        string Module_Id = string.Empty;

protected void Page_Load(object sender, EventArgs e)

        {

            CookiesMan.CheckAdminUserLogin();

            UserID = CookiesMan.GetCookie("xy_admin_user", "userID");

            Module_Id = "99020010000000000";

            if (!IsPostBack)

            {

                LoadData();

            }

            siteMap = pfunction.QueryMenu(Module_Id);

        }

protected void LoadData()

        {

            Leftmenu = GetUserLeftMenuByCache();

        }

protected string GetUserLeftMenuByCache()

        {

            string cacheKey = "JSXY-GetUserLeftMenu-" + UserID;//注意命名规则 此处不能改变,因为清除缓存时用的到

            object objCache = clsUtility.GetCache(cacheKey);

            if (objCache == null)

            {

                #region 加载LeftMenu

                DataTable dt = new DataTable();

                StringBuilder Sbuild = new StringBuilder();

                string strSql = string.Empty;

                string userRole = string.Empty;

                userRole = CookiesMan.GetCookie("xy_admin_user", "userRoleID");

                if (string.IsNullOrEmpty(userRole)) userRole = "0";

                strSql = @"select * FROM TB_MenuInfo where IsShow='1' and Menu_Code in (select Menu_ID FROM TB_UserForMenu where Role_ID in (" + userRole + ") ) order by Menu_Order,ID ";

                dt = DbHelperSQL.Query(strSql).Tables[0];

                if (dt.Rows.Count > 0)

                {

                    string strUrl = String.Empty;//链接的URl

                    string strTag = String.Empty;//跳转的属性

                    string sty = string.Empty;

                    DataRow[] dtr1;

                    dtr1 = dt.Select(" Menu_Parent='0'", "Menu_Order");

                    Sbuild.Append("
<ul class=\"f\">\n");

                    #region 一级

                    for (int ii = 0; ii < dtr1.Length; ii++)

                    {

                        int parentCount = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(*),0) from TB_MenuInfo where Menu_Parent='" + dtr1[ii]["ID"] + "'").ToString());

                        if (parentCount != 0)

                        {

                            strUrl = "#";

                            strTag = "";

                        }

                        else

                        {

                            strUrl = dtr1[ii]["Menu_Url"].ToString();

                            strTag = "target=\"main\"";

                        }

                        Sbuild.Append("<li><a href=\"" + strUrl + "\" class=\"menu_f\" " + strTag + ">" + dtr1[ii]["Menu_Ico"] + dtr1[ii]["Menu_Name"] + "</a>\n");

#region 栏目二级

                        DataRow[] dtr2 = dt.Select(" Menu_Parent='" + dtr1[ii]["ID"] + "'", "Menu_Order");

                        if (dtr2.Length > 0) Sbuild.Append("<ul class=\"s\">\n");

                        for (int j = 0; j < dtr2.Length; j++)

                        {

                            string MenuParent = dtr2[j]["ID"].ToString();

                            int ParentID = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(Menu_Parent),0) from TB_MenuInfo where Menu_Parent='" + MenuParent + "'").ToString());

                            if (ParentID != 0)

                            {

                                strUrl = "#";

                                strTag = "";

                            }

                            else

                            {

                                strUrl = dtr2[j]["Menu_Url"].ToString();

                                strTag = "target=\"main\"";

                            }

                            Sbuild.Append("<li><a href=\"" + strUrl + "\" class=\"menu_s\" " + strTag + ">" + dtr2[j]["Menu_Ico"] + dtr2[j]["Menu_Name"] + "</a>\n");

#region 栏目三级

                            DataRow[] dtr3 = dt.Select(" Menu_Parent='" + dtr2[j]["ID"] + "'", "Menu_Order");

                            if (dtr3.Length > 0) Sbuild.Append("<ul class=\"t\">");

                            for (int jj = 0; jj < dtr3.Length; jj++)

                            {

                                string MenuParent3 = dtr3[jj]["ID"].ToString();

                                int ParentID3 = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(Menu_Parent),0) from TB_MenuInfo where Menu_Parent='" + MenuParent3 + "'").ToString());

                                if (ParentID3 != 0)

                                {

                                    strUrl = "#";

                                    strTag = "";

                                }

                                else

                                {

                                    strUrl = dtr3[jj]["Menu_Url"].ToString();

                                    strTag = "target=\"main\"";

                                }

                                Sbuild.Append("<li><a href=\"" + strUrl + "\" class=\"menu_t\" " + strTag + ">" + dtr3[jj]["Menu_Ico"] + dtr3[jj]["Menu_Name"] + "</a>\n");

                                #region 栏目四级

                                DataRow[] dtr4 = dt.Select(" Menu_Parent='" + dtr3[jj]["ID"] + "'", "Menu_Order");

                                if (dtr4.Length > 0) Sbuild.Append("<ul class=\"ft\">");

for (int jjj = 0; jjj < dtr4.Length; jjj++)

                                {

                                    string MenuParent4 = dtr4[jjj]["ID"].ToString();

                                    int ParentID4 = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(Menu_Parent),0) from TB_MenuInfo where Menu_Parent='" + MenuParent4 + "'").ToString());

                                    if (ParentID4 != 0)

                                    {

                                        strUrl = "#";

                                        strTag = "";

                                    }

                                    else

                                    {

                                        strUrl = dtr4[jjj]["Menu_Url"].ToString();

                                        strTag = "target=\"main\"";

                                    }

                                    Sbuild.Append("<li><a href=\"" + strUrl + "\" " + strTag + ">" + dtr4[jjj]["Menu_Ico"] + dtr4[jjj]["Menu_Name"] + "</a></li>\n");

}

                                if (dtr4.Length > 0) Sbuild.Append(" </ul>\n");

                                #endregion

                                if (dtr4.Length == 0) Sbuild.Append("  </li>\n");

                            }

                            if (dtr3.Length > 0) Sbuild.Append(" </ul>\n");

                            #endregion

Sbuild.Append("  </li>\n");

                        }

                        if (dtr2.Length > 0) Sbuild.Append(" </ul>\n");

                        #endregion

Sbuild.Append("</li>\n");

                    }

                    #endregion

                    Sbuild.Append("</ul>\n");

                    //Leftmenu = Sbuild.ToString();

                }

                #endregion

                objCache = Sbuild.ToString();

                int minute = int.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["ModelCache"]);

                clsUtility.AddCache(cacheKey, objCache, minute);

            }

            return objCache as string;

        }

/// <summary>

        /// 获取用户栏目 Cache

        /// </summary>

        /// <param name="UserID"></param>

        /// <returns></returns>

        public DataTable GetUserMenuDataByCache(string UserID)

        {

            string cacheKey = "JSXY-GetUserFunction-" + UserID;//注意命名规则 此处不能改变,因为清除缓存时用的到

            object objCache = clsUtility.GetCache(cacheKey);

            if (objCache == null)

            {

                try

                {

                    string strSql = string.Empty;

                    string userRole = string.Empty;

                    userRole = CookiesMan.GetCookie("xy_admin_user", "userRoleID");

                    if (string.IsNullOrEmpty(userRole)) userRole = "0";

                    strSql = @"select * FROM TB_MenuInfo where IsShow='1' and Menu_Code in (select Menu_ID FROM TB_UserForMenu where Role_ID in (" + userRole + ") ) Order By Menu_Order,ID ";

                    DataTable dt = new DataTable();

                    dt = DbHelperSQL.Query(strSql).Tables[0];

                    objCache = dt;

                    int minute = int.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["ModelCache"]);

                    clsUtility.AddCache(cacheKey, objCache, minute);

}

                catch

                { }

            }

            return objCache as DataTable;

        }

/// <summary>

        /// 加载栏目

        /// </summary>

        private void DataTree()

        {

            DataTable dt = new DataTable();

            StringBuilder Sbuild = new StringBuilder();

            //string strSql = string.Empty;

            //string userRole = string.Empty;

            //userRole = CookiesMan.GetCookie("xy_admin_user", "userRoleID");

            //if (string.IsNullOrEmpty(userRole)) userRole = "0";

            //strSql = @"select * FROM TB_MenuInfo where IsShow='1' and Menu_Code in (select Menu_ID FROM TB_UserForMenu where Role_ID in (" + userRole + ") ) order by Menu_Order,ID ";

            //dt = DbHelperSQL.Query(strSql).Tables[0];

            dt = GetUserMenuDataByCache(UserID);

            if (dt.Rows.Count == 0)

            {

                return;

            }

            else

            {

                string strUrl = String.Empty;//链接的URl

                string strTag = String.Empty;//跳转的属性

                string sty = string.Empty;

                DataRow[] dtr1;

                dtr1 = dt.Select(" Menu_Parent='0'", "Menu_Order");

                Sbuild.Append("
<ul class=\"f\">\n");

for (int ii = 0; ii < dtr1.Length; ii++)

                {

                    int parentCount = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(*),0) from TB_MenuInfo where Menu_Parent='" + dtr1[ii]["ID"] + "'").ToString());

                    if (parentCount != 0)

                    {

                        strUrl = "#";

                        strTag = "";

                    }

                    else

                    {

                        strUrl = dtr1[ii]["Menu_Url"].ToString();

                        strTag = "target=\"main\"";

                    }

                    Sbuild.Append("<li><a href=\"" + strUrl + "\" class=\"menu_f\" " + strTag + ">" + dtr1[ii]["Menu_Ico"] + dtr1[ii]["Menu_Name"] + "</a>\n");

#region 栏目二级

                    DataRow[] dtr2 = dt.Select(" Menu_Parent='" + dtr1[ii]["ID"] + "'", "Menu_Order");

                    if (dtr2.Length > 0) Sbuild.Append("<ul class=\"s\">\n");

                    for (int j = 0; j < dtr2.Length; j++)

                    {

                        string MenuParent = dtr2[j]["ID"].ToString();

                        int ParentID = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(Menu_Parent),0) from TB_MenuInfo where Menu_Parent='" + MenuParent + "'").ToString());

                        if (ParentID != 0)

                        {

                            strUrl = "#";

                            strTag = "";

                        }

                        else

                        {

                            strUrl = dtr2[j]["Menu_Url"].ToString();

                            strTag = "target=\"main\"";

                        }

                        Sbuild.Append("<li><a href=\"" + strUrl + "\" class=\"menu_s\" " + strTag + ">" + dtr2[j]["Menu_Ico"] + dtr2[j]["Menu_Name"] + "</a>\n");

#region 栏目三级

                        DataRow[] dtr3 = dt.Select(" Menu_Parent='" + dtr2[j]["ID"] + "'", "Menu_Order");

                        if (dtr3.Length > 0) Sbuild.Append("<ul class=\"t\">");

                        for (int jj = 0; jj < dtr3.Length; jj++)

                        {

                            string MenuParent3 = dtr3[jj]["ID"].ToString();

                            int ParentID3 = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(Menu_Parent),0) from TB_MenuInfo where Menu_Parent='" + MenuParent3 + "'").ToString());

                            if (ParentID3 != 0)

                            {

                                strUrl = "#";

                                strTag = "";

                            }

                            else

                            {

                                strUrl = dtr3[jj]["Menu_Url"].ToString();

                                strTag = "target=\"main\"";

                            }

                            Sbuild.Append("<li><a href=\"" + strUrl + "\" class=\"menu_t\" " + strTag + ">" + dtr3[jj]["Menu_Ico"] + dtr3[jj]["Menu_Name"] + "</a>\n");

                            #region 栏目四级

                            DataRow[] dtr4 = dt.Select(" Menu_Parent='" + dtr3[jj]["ID"] + "'", "Menu_Order");

                            if (dtr4.Length > 0) Sbuild.Append("<ul class=\"ft\">");

for (int jjj = 0; jjj < dtr4.Length; jjj++)

                            {

                                string MenuParent4 = dtr4[jjj]["ID"].ToString();

                                int ParentID4 = Convert.ToInt32(DbHelperSQL.GetSingle("select isnull(count(Menu_Parent),0) from TB_MenuInfo where Menu_Parent='" + MenuParent4 + "'").ToString());

                                if (ParentID4 != 0)

                                {

                                    strUrl = "#";

                                    strTag = "";

                                }

                                else

                                {

                                    strUrl = dtr4[jjj]["Menu_Url"].ToString();

                                    strTag = "target=\"main\"";

                                }

                                Sbuild.Append("<li><a href=\"" + strUrl + "\" " + strTag + ">" + dtr4[jjj]["Menu_Ico"] + dtr4[jjj]["Menu_Name"] + "</a></li>\n");

}

                            if (dtr4.Length > 0) Sbuild.Append(" </ul>\n");

                            #endregion

                            if (dtr4.Length == 0) Sbuild.Append("  </li>\n");

                        }

                        if (dtr3.Length > 0) Sbuild.Append(" </ul>\n");

                        #endregion

Sbuild.Append("  </li>\n");

                    }

                    if (dtr2.Length > 0) Sbuild.Append(" </ul>\n");

                    #endregion

Sbuild.Append("</li>\n");

                }

                Sbuild.Append("</ul>\n");

Leftmenu = Sbuild.ToString();

}

}

}

}

表的结构:

TB_MenuInfo:                                                         TB_UserForMenu:

ID
       bigint
       自动编号                              ID
 bigint
自动编号

Menu_Code
nvarchar(50)
编码                                  Role_ID
 int
       角色ID

Menu_Name
nvarchar(50)
名称                                  Menu_ID
 bigint
栏目ID

Menu_Parent
nvarchar(50)
父级                                  Menu_Name
 nvarchar(50)
栏目名称

Menu_Rating
nvarchar(50)
层级                                  Fun_ID
 int           操作项ID

Menu_Url
nvarchar(1000)
Url                                   Fun_Name
 nvarchar(50)
操作项名称

Menu_Ico
nvarchar(200)
Ico                                   CUser
 nvarchar(50)
添加人

Menu_Order
int
       排序                                  CTime
 datetime
添加时间

IsShow
       nvarchar(50)
是否显示                              UUser
 nvarchar(50)
修改人

IsLast
       nvarchar(50)
是否显示操作项                        UTime
 datetime
修改时间

Note
       nvarchar(1000)
备注

CUser
       nvarchar(50)
创建人

CTime
       datetime
创建时间

UUser
       nvarchar(50)
修改人

UTime
       datetime
修改时间

OA项目之左导航的更多相关文章

  1. 【Java EE 学习 67 上】【OA项目练习】【JBPM工作流的使用】

    OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就 ...

  2. [deviceone开发]-企业OA项目开源分享

    一.简介 是一个真实的企业OA项目改造的开源项目,几乎涵盖了所有常用的组件,包括环信实现在线聊天等功能,类似微信的朋友圈功能,自定义的智能搜索等,而且这个是真实的通过Http链接后台web服务,里面很 ...

  3. 01传智_jbpm与OA项目_整体项目架构

    oA项目: 项目结构如下:

  4. 基于SSH2的OA项目1.0_20161206_需求分析与框架搭建

    1. SSH项目 OA项目,办公自动化,将公司的数据,文档,流程实现在系统中的管理. 降低人员交流过程中的成本.提高办公的效率. 2 .系统管理 主要实现系统权限的管理,不同的用户登陆后看到菜单项不一 ...

  5. OA项目实战(二) 开发准备

    上次的博文OA系统实践(一) 概述中,我们已经了解了OA的相关概念.从本次博文开始,我们做一个简单的OA实例. 在OA开发之前,有几个工作们需要提前做.一个是对需求进行分析,另一个是对开发环境进行选择 ...

  6. 第一周博客之二---OA项目环境搭建及开发包部署

    OA项目环境搭建 一个项目想要能够在开发人员打包好项目包之后进行测试,就必须进行项目测试环境的搭建,要根据开发工程师的开发环境采用不同的测试环境,以下只是浅谈下Java项目OA(办公自动化平台)的环境 ...

  7. OA项目_环境搭建

    OA项目现在要做成微服务,用的框架是springboot,所用的编程工具是idea,maven,做为一个程序员最关心的就是我需要在那个架包中编写代码,我们只需关注domain,repository,s ...

  8. 修改struts2自定义标签的源代码,在原有基础上增加功能(用于OA项目权限判断,是否显示某个权限)

    OA项目在做权限判断时  原始方式: 现在完成的功能 :通过改变struts2自定标签源代码   在原有的基础上  增加判断权限的功能  而页面上使用标签的方式 还是下图 步骤: 打开文件 搜索< ...

  9. 搭建OA项目环境及卸载指南

    一.项目介绍 1).JDK是什么? 全称:Java Development Kit 中文名:java开发工具包 作用:提供java项目的运行环境         JDK安装 a.jdk.jre 安装 ...

随机推荐

  1. UVALive 4255 Guess

    这题竟然是图论···orz 题意:给出一个整数序列a1,a2,--,可以得到如下矩阵 1 2 3 4 1 - + 0 + 2   + + + 3       -  - 4         + &quo ...

  2. kettle实现文本文件数据抽取方法

    KETTLE做调度的思路是,把一个有特定格式的的文本文件,写入ORACLE数据库表, 具体方法见如下操作: 首先来看下文本文件的内容: 1|test1 2|test2 3|test3 通过|进行分割的 ...

  3. Ubuntu 14.04配置FTP服务器

    搭建: 1.sudo apt-get update                                        #更新软件 2.sudo apt-get install vsftpd ...

  4. 【数据结构和算法】 O(1)时间取得栈中的最大 / 最小元素值

    常数时间取得栈中的元素最大值和最小值,我们可以想到当push的时候比较一下,如果待push元素值小于栈顶元素,则更新min值,最大值亦然. 这样有个问题就是当pop的时候,就没了最大最小值. 于是上网 ...

  5. redo文件二

    为什么要引入LGWR后台进程和redo log buffer 如果使用前台进程来将redo的信息写入到redo日志文件组中,那么会导致并发的前台进程对redo日志文件组的争用,从而使用后台进程LGWR ...

  6. C# 空值判断

    (1)NULL null 关键字是表示不引用任何对象的空引用的文字值.null 是引用类型变量的默认值.那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是 ...

  7. Cocos2dx-截屏并设置图片尺寸

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=522 前几天添加微信图片分享的时 ...

  8. 最大二位子数组和问题(homework-02)

    前面已经谈过最大一维子数组和问题,这里面扩展到二维. 一. 常规情况 一个矩形的数组,找到一个矩形的子数组有最大的元素和,求这个和. 1. 从朴素算法入手,枚举矩形数组的4个顶点,以此计算其数组和.同 ...

  9. (转载)Java之外观模式(Facade Pattern)

    1.概念 为子系统中的一组接口提供一个统一接口.Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用. 2.UML 3.代码 下面是一个具体案例的代码: package facade; ...

  10. (转)从工程中删除Cocoapods

    1. 删除工程文件夹下的Podfile.Podfile.lock及Pods文件夹 2. 删除xcworkspace文件 3. 使用xcodeproj文件打开工程,删除Frameworks组下的Pods ...