基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合


Posted in Javascript onAugust 11, 2016

本文支持两种方式的数据,一种为List集合,一种为json字符串。

先来介绍一下后台返回list集合(推荐使用此方法):

控制器代码如下:

public static List<TC_DictionaryInfo> DInfo = new List<TC_DictionaryInfo>();
/// <summary>
/// TreeView视图
/// </summary>
/// <returns></returns>
public ActionResult May(string TypeCode,int parentId)
{
ViewBag.TypeCode = TypeCode;
ViewBag.ParentId = parentId;
return View();
}
[HttpPost]
public ActionResult GetTreeData(string TypeCode,int parentId)
{
List<TC_DictionaryInfo> DInfo = dbll.GetModelList("TypeCode="+TypeCode);
return Json(GetChildNodes(0,new NodeModel(){}, DInfo).nodes);
}
///<summary>
/// GetChildNodes方法,此方法使用递归
/// </summary>
/// <param name="parentId"></param>
/// <returns></returns>
public NodeModel GetChildNodes(int parentId,NodeModel childnodestr,List<TC_DictionaryInfo> DInfo)
{
List<TC_DictionaryInfo> DictionaryList = DInfo.Where(e => Convert.ToInt32(e.ParentId) == parentId).ToList();
for (int i = 0; i < DictionaryList.Count; i++)
{
NodeModel NewNode = new NodeModel();
NewNode.DicId = DictionaryList[i].DicId;
NewNode.text = DictionaryList[i].DICName;
NewNode.ParentId = DictionaryList[i].ParentId;
childnodestr.nodes.Add(NewNode);
GetChildNodes(NewNode.DicId, NewNode, DInfo);
}
return childnodestr;
}

视图代码如下:

<script type="text/javascript">
var typecode = @ViewBag.TypeCode;
var parentid = @ViewBag.ParentId;
$(function() {
$.ajax({
type: 'Post',
url: '/Type/GetTreeData',
data:{
TypeCode:typecode,
ParentId:parentid,
},
//data: para,
dataType: 'json',
async: false,
success: function (data) {
var defaultData = eval(data);
//var defaultData = data;
$('#treeview4').treeview({
color: "#428bca",
data: defaultData
});
},
error: function (err) {
alert('不好意思,数据忘记带上了。。。');
}
});
</scipt>

第二种方式为后台返回json字符串这种方式(此方式为后台拼接json字符串传给前台):

不建议大家采用这种方式,比较容易出错。

public ActionResult May(string TypeCode,int parentId)
{
ViewBag.TypeCode = TypeCode;
ViewBag.ParentId = parentId;
return View();
} 
public ActionResult GetTreeData()
{
//创建jsondata对象
StringBuilder jsonData = new StringBuilder();
//拼接json字符串 开始{
jsonData.Append("[");
//调用GetChildNodes方法,默认传参试为0(0表示根节点菜单选项)
jsonData.Append(GetChildNodes(0));
//闭合Node子类数组 ]
jsonData.Append("]");
//返回json字符串
return Json(jsonData.ToString());
}
/// <summary>
/// GetChildNodes方法,此方法使用递归
/// </summary>
/// <param name = "parentId" ></ param >
/// < returns ></ returns >
public string GetChildNodes(int parentId)
{
//为DInfo赋值(DInfo承载页面所需的值(间接将值传给页面)),查询所有的数据
List<TC_DictionaryInfo> DInfo = dbll.GetModelList("");
//创建ChiidNodeStr变量
StringBuilder ChildNodeStr = new StringBuilder();
//查询符合条件的数据(ParentId=0),DictionaryList接收数据
List<TC_DictionaryInfo> DictionaryList = DInfo.Where(e => Convert.ToInt32(e.ParentId) == parentId).ToList();
//循环DictionaryList为TreeView所需数据分层级(即子类、父类等节点分开)
for (int i = 0; i < DictionaryList.Count; i++)
{
//Nodes数组开始 {
ChildNodeStr.Append("{");
//实例化NewNode
NodeModel NewNode = new NodeModel();
//分别为字段赋值
NewNode.DicId = DictionaryList[i].DicId;
NewNode.text = DictionaryList[i].DICName;
NewNode.ParentId = DictionaryList[i].ParentId;
//将要显示的字段拼接
ChildNodeStr.Append("text:'" + NewNode.text + "',");
//超链接地址(此处设置为空链接#)
ChildNodeStr.Append("href:'#parent1',");
ChildNodeStr.Append("tags:['0']");
//拼接完毕子类分层,去掉最后多余的符号(,)
string ChildNodes = GetChildNodes(NewNode.DicId).Trim(',');
//判断父类下是否有子类,如果有子类放到Nodes里,如果没有不让他显示为数组形式“[]”
if (ChildNodes != string.Empty)
{
//拼接Json字符串格式
ChildNodeStr.Append(",");
ChildNodeStr.Append("nodes:[");
ChildNodeStr.Append(ChildNodes);
ChildNodeStr.Append("]");
}
//结尾加上}, 
ChildNodeStr.Append("},");
}
//返回Json字符串,并将,去掉
return ChildNodeStr.ToString().Trim(',');
}

前台代码和上面基本一致,唯一的差别在于

var defaultData = eval(data);

因为我们后台是拼接的json字符串的缘故,我们需要将json字符串转化为json数组(网上下载的基于Bootstrap的JQuery TreeView树形控件仅仅支持json数组),我也是费了很大的劲才找到的。使用MVC+Bootstrap开发TreeView的同学要注意!!!

下面接着给大家介绍基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合

以上所述是小编给大家介绍的基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
Javascript图像处理—平滑处理实现原理
Dec 28 Javascript
javascript中setTimeout使用指南
Jul 26 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
js图片查看器插件用法示例
Jun 22 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
前端深入理解Typescript泛型概念
Mar 09 Javascript
js如何验证密码强度
Mar 18 Javascript
vue组件暴露和.js文件暴露接口操作
Aug 11 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 #Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
Aug 11 #Javascript
jQuery多个版本和其他js库冲突的解决方法
Aug 11 #Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 #Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
Aug 11 #Javascript
JavaScript性能优化总结之加载与执行
Aug 11 #Javascript
js接收并转化Java中的数组对象的方法
Aug 11 #Javascript
You might like
缅甸的咖啡简史
2021/03/04 咖啡文化
php录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
js数组的操作详解
2013/03/27 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
Python程序员开发中常犯的10个错误
2014/07/07 Python
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
python 制作磁力搜索工具
2021/03/04 Python
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
银行办理业务介绍信
2014/01/18 职场文书
大学生旷课检讨书
2014/01/22 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
出生证明格式
2015/06/15 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
Python Django模型详解
2021/10/05 Python
基于Python编写一个监控CPU的应用系统
2022/06/25 Python