基于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 相关文章推荐
Html中JS脚本执行顺序简单举例说明
Jun 19 Javascript
jQuery输入城市查看地图使用介绍
May 08 Javascript
javascript匿名函数实例分析
Nov 18 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
JavaScript如何把两个数组对象合并过程解析
Oct 10 Javascript
jquery实现点击弹出对话框
Feb 08 jQuery
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
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
accesskey 提交
2006/06/26 Javascript
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
jquery编写日期选择器
2017/03/16 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
python求crc32值的方法
2014/10/05 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
如何基于线程池提升request模块效率
2020/04/18 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
捷克玩具商店:Bambule
2019/02/23 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
一套VC试题
2015/01/23 面试题
优秀学生干部推荐材料
2014/02/03 职场文书
企业内部培训方案
2014/02/04 职场文书
人力资源总监工作说明
2014/03/03 职场文书
保密承诺书
2014/03/27 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书