C#使用Jquery zTree實現樹狀結構顯示_非同步數據載入

来源:http://www.cnblogs.com/lxhbky/archive/2016/12/18/6195053.html
-Advertisement-
Play Games

C#使用Jquery zTree實現樹狀結構顯示_非同步數據載入 ...


JQuery-Ztree下載地址:https://github.com/zTree/zTree_v3

JQuery-Ztree數結構演示頁面:  http://www.treejs.cn/v3/demo.php#_101

關於zTree的詳細解釋請看演示頁面,還有zTree幫助Demo。

 

下麵簡要講解下本人用到的其中一個實例(直接上關鍵代碼了):

非同步載入節點數據:  

A-前臺:

<link href="zTree_v3-master/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
    <script src="zTree_v3-master/js/jquery.ztree.core.js" type="text/javascript"></script>
    <script language="JavaScript" type="text/javascript">
    var setting = {
        async: {
            enable: true,
            url: "../Handler/ShoppingHandler.ashx",   //請求的一般處理程式
            autoParam: ["id"],                          //自帶參數id--來自於節點id
            otherParam: { "type": "GetUserLevelList" },  //其他參數自定義
            dataFilter: filter,    //數據過濾
            type: "post"    //請求方式
        }
    };

    function filter(treeId, parentNode, childNodes) {
        if (!childNodes) return null;
        for (var i = 0, l = childNodes.length; i < l; i++) {
            childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
        }
        return childNodes;
    }

    $(document).ready(function () {
        $.fn.zTree.init($("#treeDemo"), setting);  //渲染樹結構
    });
    </script>
<div class="zTreeDemoBackground left">
        <ul id="treeDemo" class="ztree"></ul>
</div>
View Code

B後臺:

using MobileBusiness.Common.Data;
using MobileBusiness.Library.Passport;
using MobileBusiness.Shopping.Data;
using MobileBusiness.Shopping.Data.Common;
using MobileBusiness.Shopping.Data.Entity;
using MobileBusiness.Web.Library.Script;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ShoppingData = MobileBusiness.Shopping.Data.Entity;

namespace MobileBusiness.Shopping.BusinessManage.Handler
{
    /// <summary>
    /// Shopping 的摘要說明
    /// </summary>
    public class ShoppingHandler : IHttpHandler
    {
        //當前登錄用戶信息
        WeChatUser weChatUser = WeChatIdentity.CurrentUser;

        public void ProcessRequest(HttpContext context)
        {
            string result = "";
            if (context.Request["type"] != null)
            {
                string requestType = context.Request["type"];

                try
                {
                    switch (requestType)
                    {
                        //獲取用戶信息等級列表
                        case "GetUserLevelList":
                            result = this.GetUserLevelList(context); break;
                        default:
                            break;
                    }
                }
                catch (Exception ex)
                {
                    result = ex.Message;
                }
            }

            context.Response.ContentType = "text/html";
            context.Response.Write(result);
            context.Response.End();
        }

        private string GetUserLevelList(HttpContext context)
        {
            string parentUserPhone = context.Request["id"];
            return GetUserCollByPhone(parentUserPhone);
        }
        private string GetUserCollByPhone(string phone)
        {
            //編碼,父編碼,名稱,是否打開,打開圖片,關閉圖片
            //{ id:1, pId:0, name:"展開、摺疊 自定義圖標不同", open:true, iconOpen:"../../../css/zTreeStyle/img/diy/1_open.png", iconClose:"../../../css/zTreeStyle/img/diy/1_close.png"},
            //編碼,父編碼,名稱,是否打開,顯示圖片
            //{ id: 11, pId: 1, name: "葉子節點1", icon: "../../../css/zTreeStyle/img/diy/2.png"},
            List<object> result = new List<object>();

            ShoppingData.UserInfoCollection userColl = ShoppingData.UserInfoAdapter.Instance.LoadByParentUserPhone(phone);
            userColl.ForEach(user =>
            {
                result.Add(new
                {
                    id = user.Phone,
                    pid = phone,
                    name = user.UserName,
                    isParent = ShoppingData.UserInfoAdapter.Instance.LoadByParentUserPhone(user.Phone).Count > 0 ? true : false
                });
            });
            return JsonConvert.SerializeObject(result);
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、控制面板》程式和功能》打開或關閉Windows功能 > Internet信息服務 > 萬維網服務 > 應用程式開發功能 > ASP.NET(看這個是否選上); 2、“處理程式映射”中缺少ASP.NET 4.0的映射,需要添加映射。操作方法:在管理員身份打開命令行,運行以下命令: C:\Windo ...
  • 裝箱和拆箱 目錄 性能 裝箱 拆箱 介紹 裝箱是將值類型轉換為 object 類型或由此值類型實現的任何介面類型的一個過程。 當 CLR 對值類型進行裝箱時,會將該值包裝到 System.Object 內部,再將後者存儲在托管堆上。 拆箱將從對象中提取值類型。 裝箱是隱式的;拆箱是顯式的。 裝箱和拆 ...
  • 異常介紹 C# 語言的異常處理功能可幫助您處理程式運行時出現的任何意外或異常情況。 異常處理使用 try、catch 和 finally 關鍵字嘗試某些操作,以處理失敗情況,儘管這些操作有可能失敗,但如果您確定需要這樣做,且希望在事後清理資源,就可以嘗試這樣做。 公共語言運行時 (CLR)、.NET ...
  • 學會處理異常 C# 程式員可使用 try 塊對可能受異常影響的代碼進行分區。 關聯的 catch 塊用於處理任何結果異常。 一個包含代碼的 finally 塊,無論 try 塊中是否引發異常(例如,釋放在 try 塊中分配的資源),這些代碼都會運行。 一個 try 塊需要一個或多個關聯的 catch ...
  • 學會使用異常 在 C# 中,程式中的運行時錯誤通過使用一種稱為“異常”的機制在程式中傳播。 異常由錯誤的代碼引發,並由能夠更正錯誤的代碼進行捕捉。 異常可由 .NET 的公共語言運行時 (CLR) 或由程式中的代碼引發。 一旦引發了一個異常,這個異常就會在調用堆棧中向上傳播,直到找到針對它的 cat ...
  • 再次調整項目架構是因為和群友dezhou的一次聊天,我原來的想法是項目儘量做簡單點別搞太複雜了,僅使用了DbContext的註入,其他的也沒有寫介面耦合度很高。和dezhou聊過之後我仔細考慮了一下,還是解耦吧,本來按照軟體設計模式就應該是高內聚低耦合的,低耦合使項目的模塊獨立於其他模塊,增加了可維... ...
  • 因為MongoDb 跨平臺,可以免費使用,讀寫效率高,集群搭建簡單,可以水平擴展等各種因素。 我決定研究一下Mongodb,在查看了相關文檔後發現它對C#的支持不錯,而且還有現成的C#的驅動, 新版的驅動還支持Linq,因為複雜的查詢可以交給Linq去實現。正因為官方的驅動很強大。 剛開始接觸時發現 ...
  • DataTable數據批量寫入資料庫三種方法比較 標簽: it 分類: C#1) insert迴圈插入;2) sqldataadapter.update(dataset,tablename);3) sqlbulkcopy.WriteToServer(datatable);1、生成測試的datatab ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...