基于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 相关文章推荐
jquery新的绑定事件机制on方法的使用方法
Apr 15 Javascript
jquery实现当滑动到一定位置时固定效果
Jun 17 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
bootstrap table表格插件使用详解
May 08 Javascript
js自定义瀑布流布局插件
May 16 Javascript
webpack本地开发环境无法用IP访问的解决方法
Mar 20 Javascript
微信小程序提交form操作示例
Dec 30 Javascript
微信小程序文字显示换行问题
Jul 28 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
Mar 17 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 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
B2K与车机的中波PK
2021/03/02 无线电
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
轻松掌握JavaScript状态模式
2016/09/07 Javascript
EsLint入门学习教程
2017/02/17 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
django如何通过类视图使用装饰器
2019/07/24 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python可视化text()函数使用详解
2020/02/11 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
行政人员工作职责
2013/12/05 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
公司慰问信范文
2015/03/23 职场文书
2015年双拥工作总结
2015/04/08 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
python playwrigh框架入门安装使用
2022/07/23 Python