热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(菜鸟要飞系列)四,基于Asp.NetMVC5的后台管理系统(zTree绑定Json数据生成树)

上一次老师让我们用递归将中国城市镇县四级联动显示在树上,那个时候就知道可以显示在zTree上,可是苦于对Json的不了解,对zTree的Api的不了解,一直没有做出来,只好将递归算法显示在了窗体上,

上一次老师让我们用递归将中国城市镇县四级联动 显示在树上,那个时候就知道可以显示在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 Liststring, object>> jsOnlist= new Liststring, object>>();
4 List treeList= new List();
5
6 OracleHelper ora = new OracleHelper();
7 string sql = "select * from treegeneration";
8 DataTable dt = ora.Connect(sql);
9 for (int i = 0; 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

 


推荐阅读
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细探讨了VxWorks操作系统中双向链表和环形缓冲区的实现原理及使用方法,通过具体示例代码加深理解。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
author-avatar
dcwzyb_271
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有