EasyUI Tree+Asp.net實(shí)現(xiàn)權(quán)限樹或目錄樹導(dǎo)航的簡單實(shí)例

字號:


    本篇文章主要是對EasyUI Tree+Asp.net實(shí)現(xiàn)權(quán)限樹或目錄樹導(dǎo)航的簡單實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    代碼如下:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Manage_Main" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
    <html xmlns="">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>網(wǎng)站后臺通用管理系統(tǒng),<%=adminname%>,您好!</title>
    <link href="Css/default.css" rel="stylesheet" type="text/css" />
    <!--easyui-->
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" />
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/tree.css" />
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" />
    <script type="text/javascript" src="easyui/jquery-1.8.0.min.js"></script>
    <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src='EasyUI/JQLoader.js'> </script>
    <script type="text/javascript" src='EasyUI/outlook.js'> </script>
    <script type="text/javascript">
    $(function () {
    $('#lefttree').tree({
    animate: true,
    checkbox: false,
    url: 'GetTreeDataFromDB.ashx?father=0',
    onClick: function (node) {
    if (node.attributes != "") {
    addTab(node.text, node.attributes, node.id);
    }
    },
    onLoadSuccess: function (node, data) {
    $('#lefttree').show();
    }
    });
    $('#loginOut').click(function () {
    $.messager.confirm('系統(tǒng)提示', '您確定要退出本次登錄嗎?', function (r) {
    if (r) {
    location.href = 'LoginExit.ashx';
    }
    });
    })
    });
    </script>
    </head>
    <body scroll="no">
    <form id="form1" runat="server">
    <noscript>
    <div> <img src="images/noscript.gif" alt='抱歉,請開啟腳本支持!' /> </div>
    </noscript>
    <div region="north" split="true">
    <div> <span> </span>
    <div> <span> </span><a href="#" id="loginOut">安全退出</a> </div>
    </div>
    <span><img src="images/blocks.gif" width="20" height="20" />網(wǎng)站后臺通用管理系統(tǒng) V1.0</span> </div>
    <div region="south" split="true">
    <div> 網(wǎng)站后臺通用管理系統(tǒng) <%=adminname%>,您好! 版權(quán)所有@2012</div>
    </div>
    <div region="west" hide="true" split="true" id="west">
    <div id="nav" fit="true">
    <!-- 導(dǎo)航內(nèi)容 -->
    <div id="lefttree"></div>
    </div>
    </div>
    <div id="mainPanle" region="center">
    <div id="tabs" fit="true" >
    <div > <span>歡迎進(jìn)入系統(tǒng)</span> </div>
    </div>
    </div>
    <div id="mm">
    <div id="mm-tabupdate">刷新</div>
    <div></div>
    <div id="mm-tabclose">關(guān)閉</div>
    <div id="mm-tabcloseall">全部關(guān)閉</div>
    <div id="mm-tabcloseother">除此之外全部關(guān)閉</div>
    <div></div>
    <div id="mm-tabcloseright">當(dāng)前頁右側(cè)全部關(guān)閉</div>
    <div id="mm-tabcloseleft">當(dāng)前頁左側(cè)全部關(guān)閉</div>
    <div></div>
    <div id="mm-exit">退出</div>
    </div>
    </form>
    </body>
    </html>
    復(fù)制代碼 代碼如下:
    <%@ WebHandler Language="C#" Class="GetTreeDataFromDB" %>
    using System;
    using System.Web;
    using System.Configuration;
    using System.Data;
    using System.Text;
    using System.Collections.Generic;
    //add
    using System.Web.Script.Serialization;
    public class GetTreeDataFromDB : IHttpHandler
    {
    public void ProcessRequest(HttpContext context)
    {
    context.Response.ContentType = "text/plain";
    //獲取數(shù)據(jù)庫中的分類數(shù)據(jù)
    string fatherid = context.Request.QueryString["father"];
    DataTable dt = createDT();
    string json = GetTreeJsonByTable(dt, "module_id", "module_name","module_url", "module_fatherid", "0");
    context.Response.Write(json);
    context.Response.End();
    }
    #region 根據(jù)DataTable生成EasyUI Tree Json樹結(jié)構(gòu)
    StringBuilder result = new StringBuilder();
    StringBuilder sb = new StringBuilder();
    /// <summary>
    /// 根據(jù)DataTable生成EasyUI Tree Json樹結(jié)構(gòu)
    /// </summary>
    /// <param name="tabel">數(shù)據(jù)源</param>
    /// <param name="idCol">ID列</param>
    /// <param name="txtCol">Text列</param>
    /// <param name="url">節(jié)點(diǎn)Url</param>
    /// <param name="rela">關(guān)系字段</param>
    /// <param name="pId">父ID</param>
    private string GetTreeJsonByTable(DataTable tabel, string idCol, string txtCol, string url, string rela, object pId)
    {
    result.Append(sb.ToString());
    sb.Clear();
    if (tabel.Rows.Count > 0)
    {
    sb.Append("[");
    string filer = string.Format("{0}='{1}'", rela, pId);
    DataRow[] rows = tabel.Select(filer);
    if (rows.Length > 0)
    {
    foreach (DataRow row in rows)
    {
    sb.Append("{"id":"" + row[idCol] + "","text":"" + row[txtCol] + "","attributes":"" + row[url] + "","state":"open"");
    if (tabel.Select(string.Format("{0}='{1}'", rela, row[idCol])).Length > 0)
    {
    sb.Append(","children":");
    GetTreeJsonByTable(tabel, idCol, txtCol,url, rela, row[idCol]);
    result.Append(sb.ToString());
    sb.Clear();
    }
    result.Append(sb.ToString());
    sb.Clear();
    sb.Append("},");
    }
    sb = sb.Remove(sb.Length - 1, 1);
    }
    sb.Append("]");
    result.Append(sb.ToString());
    sb.Clear();
    }
    return result.ToString();
    }
    #endregion
    #region 創(chuàng)建數(shù)據(jù)
    protected static DataTable createDT()
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("module_id");
    dt.Columns.Add("module_name");
    dt.Columns.Add("module_fatherid");
    dt.Columns.Add("module_url");
    dt.Columns.Add("module_order");
    dt.Rows.Add("C1", "全國", "0", "1.aspx", "1");
    dt.Rows.Add("M01", "廣東", "C1", "2.aspx", "1");
    dt.Rows.Add("M0101", "深圳", "M01", "3.aspx", "100");
    dt.Rows.Add("M010101", "南山區(qū)", "M0101", "4.aspx", "1000");
    dt.Rows.Add("M010102", "羅湖區(qū)", "M0101", "", "1001");
    dt.Rows.Add("M010103", "福田區(qū)", "M0101", "", "1002");
    dt.Rows.Add("M010104", "寶安區(qū)", "M0101", "", "1003");
    dt.Rows.Add("M010105", "龍崗區(qū)", "M0101", "", "1004");
    dt.Rows.Add("M01010301", "上梅林", "M010103", "", "1002001");
    dt.Rows.Add("M01010302", "下梅林", "M010103", "", "1002002");
    dt.Rows.Add("M01010303", "車公廟", "M010103", "", "1002003");
    dt.Rows.Add("M01010304", "竹子林", "M010103", "", "1002004");
    dt.Rows.Add("M01010305", "八卦嶺", "M010103", "", "1002005");
    dt.Rows.Add("M01010306", "華強(qiáng)北", "M010103", "", "1002006");
    dt.Rows.Add("M0102", "廣州", "M01", "", "101");
    dt.Rows.Add("M010201", "越秀區(qū)", "M0102", "", "1105");
    dt.Rows.Add("M010202", "海珠區(qū)", "M0102", "", "1106");
    dt.Rows.Add("M010203", "天河區(qū)", "M0102", "", "1107");
    dt.Rows.Add("M010204", "白云區(qū)", "M0102", "", "1108");
    dt.Rows.Add("M010205", "黃埔區(qū)", "M0102", "", "1109");
    dt.Rows.Add("M010206", "荔灣區(qū)", "M0102", "", "1110");
    dt.Rows.Add("M010207", "羅崗區(qū)", "M0102", "", "1111");
    dt.Rows.Add("M010208", "南沙區(qū)", "M0102", "", "1112");
    return dt;
    }
    #endregion
    public bool IsReusable
    {
    get
    {
    return false;
    }
    }
    }
    代碼如下:
    #region 根據(jù)DataTable生成EasyUI Tree Json樹結(jié)構(gòu)
    StringBuilder result = new StringBuilder();
    StringBuilder sb = new StringBuilder();
    /// <summary>
    /// 根據(jù)DataTable生成EasyUI Tree Json樹結(jié)構(gòu)
    /// </summary>
    /// <param name="tabel">數(shù)據(jù)源</param>
    /// <param name="idCol">ID列</param>
    /// <param name="txtCol">Text列</param>
    /// <param name="url">節(jié)點(diǎn)Url</param>
    /// <param name="rela">關(guān)系字段</param>
    /// <param name="pId">父ID</param>
    private string GetTreeJsonByTable(DataTable tabel, string idCol, string txtCol, string url, string rela, object pId)
    {
    result.Append(sb.ToString());
    sb.Clear();
    if (tabel.Rows.Count > 0)
    {
    sb.Append("[");
    string filer = string.Format("{0}='{1}'", rela, pId);
    DataRow[] rows = tabel.Select(filer);
    if (rows.Length > 0)
    {
    foreach (DataRow row in rows)
    {
    sb.Append("{"id":"" + row[idCol] + "","text":"" + row[txtCol] + "","attributes":"" + row[url] + """);
    if (tabel.Select(string.Format("{0}='{1}'", rela, row[idCol])).Length > 0)
    {
    //點(diǎn)擊展開
    sb.Append(","state":"closed","children":");
    GetTreeJsonByTable(tabel, idCol, txtCol,url, rela, row[idCol]);
    result.Append(sb.ToString());
    sb.Clear();
    }
    result.Append(sb.ToString());
    sb.Clear();
    sb.Append("},");
    }
    sb = sb.Remove(sb.Length - 1, 1);
    }
    sb.Append("]");
    result.Append(sb.ToString());
    sb.Clear();
    }
    return result.ToString();
    }
    #endregion