(菜鳥要飛系列)四,基於Asp.Net MVC5的后台管理系統(zTree綁定Json數據生成樹)


上一次老師讓我們用遞歸將中國城市鎮縣四級聯動 顯示在樹上,那個時候就知道可以顯示在zTree上,可是苦於對Json的不了解,對zTree的Api的不了解,一直沒有做出來,只好將遞歸算法顯示在了窗體上,見C# 使用winForm的TreeView顯示中國城鎮四級聯動, 前幾天老師終於將他以前做的zTree的例子給我研究,終於知道了怎么寫了(哭瞎,好沒有成就感),感覺網上這部分資源好少,有也是關於SqlServer用EntityFramework中數據上下文寫的,由於老師不讓用EntityFramework框架,(總是說Oracle的EntityFramework框架太差勁,總有一天我要看看到底是不是這樣),才讓我花了好長時間都無結果,一看源碼原來如此簡單粗暴。

首先獻上 zTree的html代碼

 1 @{
 2     Layout = null;
 3 }
 4 
 5 <title>ZTREE DEMO - Custom Icon </title>
 6 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 7 <link href="~/Content/zTree_v3/css/demo.css" rel="stylesheet" />
 8 <link href="~/Content/zTree_v3/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
 9 <script src="~/Content/zTree_v3/js/jquery-1.4.4.min.js"></script>
10 <script src="~/Content/zTree_v3/js/jquery.ztree.core-3.5.js"></script>
11 <script src="~/Content/zTree_v3/js/jquery.ztree.excheck-3.5.js"></script>
12 <script type="text/javascript">
13     $(function () {
14         $.ajax({
15             type: "Get",
16             url: "@Url.Action("GetTreeView","_Admin")",
17             //async: false,
18             success: function (data) {
19                 $.fn.zTree.init($("#treeDemo"), setting, data);
20             }
21         });
22     })
23 
24     var setting = {
25         check: {
26             enable: true,
27             chkStyle: "checkbox",
28             chkboxType: { "Y": "ps", "N": "ps" },
29             isSimpleData: true,              //數據是否采用簡單 Array 格式,默認false
30             treeNodeKey: "id",               //在isSimpleData格式下,當前節點id屬性
31             treeNodeParentKey: "pId",        //在isSimpleData格式下,當前節點的父節點id屬性
32             showLine: true,                  //是否顯示節點間的連線
33             checkable: true
34         },
35         data: {
36             simpleData: {
37                 enable: true
38             }
39         },
40         callback: {
41             onClick: zTreeOnClick
42         }
43     };
44     popZtree(setting);
45     function zTreeOnClick(event, treeId, treeNode) {
46         alert(treeNode.tId + " ," + treeNode.treeNode);
47     };
48 </script>
49 
50 <div class="zTreeDemoBackground left">
51     <ul id="treeDemo" class="ztree"></ul>
52 </div>

這里要去zTree的官網http://www.ztree.me/v3/main.php#_zTreeInfo下載js,css,等文件

然后將數據庫中的數據轉換為Json數據,這里先上數據庫中的sql http://download.csdn.net/detail/qq_23726427/9500512

然后再是轉化代碼

 1  public JsonResult GetTreeView()
 2         {
 3             List<Dictionary<string, object>> jsonlist = new List<Dictionary<string, object>>();
 4             List<TreeModel> treeList= new List<TreeModel>();
 5 
 6             OracleHelper ora = new OracleHelper();
 7             string sql = "select * from treegeneration";
 8             DataTable dt = ora.Connect(sql);
 9             for (int i = 0; i < dt.Rows.Count; i++)
10             {
11                 TreeModel tree = new TreeModel();
12                 tree.TreeId = Convert.ToInt32(dt.Rows[i][0]);
13                 tree.TreeNodeCode = dt.Rows[i][1].ToString();
14                 tree.ParentTd = dt.Rows[i][2].ToString();
15                 tree.NodeName = dt.Rows[i][3].ToString();
16                 tree.NodeLevel =Convert.ToInt32(dt.Rows[i][4].ToString());
17 
18                 treeList.Add(tree);
19             }
20 
21             foreach (var model in treeList)
22             {
23                 Dictionary<string, object> jsonobj = new Dictionary<string, object>();
24                 jsonobj.Add("id", model.TreeNodeCode);
25                 jsonobj.Add("pId", model.ParentTd);
26                 jsonobj.Add("name", model.NodeName);
27                 //jsonobj.Add("icon", "");
28                 jsonlist.Add(jsonobj);
29             }
30             return Json(jsonlist, JsonRequestBehavior.AllowGet);
31         }

因為我自己Oracle數據庫中的建表sql,和數據sql找不到了,所以發了個上次做的那個Mysql數據庫的城鎮級聯數據表,這里你將上述代碼稍加修改即可,這里不再贅述。

注意這里  jquery.ztree.excheck-3.5.js  ,jquery.ztree.core-3.5.js 是關鍵,要不然待會你生成treeView的復選框就看不見了。效果圖如下

這里順便附上SqlServer中的EntittyFramework的Context上下文的方法將數據庫中數據轉化為Json的樣式

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using MvcApplication4.Models;
 7 
 8 namespace MvcApplication4.Controllers
 9 {
10     public class HomeController : Controller
11     {
12         //
13         // GET: /Home/
14         private Context db = new Context();
15         public ActionResult Index()
16         {
17             return View();
18         }
19 
20         public ActionResult getmenu()
21         { 
22             var list = (from a in db.Menutree
23                         select new
24                         {
25                             id = a.Zid,
26                             pId = a.Pid,
27                             name = a.Name,
28                             LinkUrl = a.LinkUrl
29                         }).ToList();
30             return Json(list, JsonRequestBehavior.AllowGet);
31         }
32 
33     }
34 }
View Code

研究起來,相信親們都可以看懂,不懂得進群交流,有問必答,群號499718271

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM