MVC小系列(十四)【MVC+ZTree大数据异步树加载】
ZTree是一个jquery的树插件
可以异步加载
第一步定义一个标准的接口(指的是与ztree默认的数据元素保持一致)
/// <summary>
/// ZTree数据结构
/// </summary>
public interface IZTree
{
/// <summary>
/// 节点ID
/// </summar
int id { get; set; }
/// <summary>
/// 节点名称
/// </summary>
string name { get; set; }
/// <summary>
/// 父ID
/// </summary>
int pId { get; set; }
/// <summary>
/// 是否有子节点
/// </summary>
bool isParent { get; set; }
}
public class Node : IZTree
{
#region IZTree 成员
/// <summary>
/// 节点ID
/// </summary>
public int id { get; set; }
/// <summary>
/// 节点名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 父ID
/// </summary>
public int pId { get; set; }
/// <summary>
/// 是否有子节点
/// </summary>
public bool isParent { get; set; } #endregion
}
第二步:会前台页面提供一个GET请求的方法,用来根据父ID,得到它的一级子节点列表
/// <summary>
/// 得到指定ID的子节点列表,并序列化为JSON串
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public string AsyncGetNodes(int? id)
{
return nodearr.Where(i => i.pId == (id ?? )).ToJson();
}
当然需要一个JsonHelper工具类:
public static class JsonHelper
{
/// <summary>
/// 返回对象序列化
/// </summary>
/// <param name="obj">源对象</param>
/// <returns>json数据</returns>
public static string ToJson(this object obj)
{
JavaScriptSerializer serialize = new JavaScriptSerializer();
return serialize.Serialize(obj);
} /// <summary>
/// 控制深度
/// </summary>
/// <param name="obj">源对象</param>
/// <param name="recursionDepth">深度</param>
/// <returns>json数据</returns>
public static string ToJson(this object obj, int recursionDepth)
{
JavaScriptSerializer serialize = new JavaScriptSerializer();
serialize.RecursionLimit = recursionDepth;
return serialize.Serialize(obj);
} public static object ParseFromJson<T>(string szJson)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
{
//需加载程序集:System.Runtime.Serialization;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
第三步:前台展示可能 是这样
@*注意引用zTree库*@
<link href="../../Scripts/JQuery-zTree/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script src="../../Scripts/JQuery-zTree/js/jquery-1.4.4.min.js"></script>
<script src="../../Scripts/JQuery-zTree/js/jquery.ztree.all-3.5.min.js"></script> <script type="text/javascript">
//异步加载节点
var setting4 = {
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId:
}
},
async: {
//异步加载
enable: true,
url: "/category/AsyncGetNodes",
autoParam: ["id", "name", "pId"]
},
callback: {
beforeExpand: beforeExpand,
onAsyncSuccess: onAsyncSuccess,
onAsyncError: onAsyncError
}
}; function createTree() {
$.ajax({
url: '/category/AsyncGetNodes', //url action是方法的名称
data: { id: },
type: 'Get',
dataType: "text", //可以是text,如果用text,返回的结果为字符串;如果需要json格式的,可是设置为json
success: function (data) {
$.fn.zTree.init($("#treeDemo4"), setting4, eval('(' + data + ')'));
},
error: function (msg) {
alert(" 数据加载失败!" + msg);
}
});
} function beforeExpand(treeId, treeNode) {
if (!treeNode.isAjaxing) {
return true;
} else {
alert("zTree 正在下载数据中,请稍后展开节点。。。");
return false;
}
} function onAsyncSuccess(event, treeId, treeNode, msg) { }
function onAsyncError() {
alert(" 数据加载失败");
} $(document).ready(function () {
createTree();
});
</script>
<div id="treeDemo4" class="ztree"></div>
MVC小系列(十四)【MVC+ZTree大数据异步树加载】的更多相关文章
- 爱上MVC3~MVC+ZTree大数据异步树加载
回到目录 理论部分: MVC+ZTree:指在.net MVC环境下进行开发,ZTree是一个jquery的树插件 大数据:一般我们系统中,有一些表结构属于树型的,如分类,地域,菜单,网站导航等等,而 ...
- MVC+ZTree大数据异步树加载
实例部分: 首先是为ZTree提供的数据规范,定义一个标准的接口,这样对于前台调用是清楚的,简单的,因为它返回的JSON数据将与ZTree默认的数据元素保持一致 /// <summary> ...
- 参考 ZTree 加载大数据量。加载慢问题解析
参考 ZTree 加载大数据量. 1.一次性加载大数据量加载说明 1).zTree v3.x 针对大数据量一次性加载进行了更深入的优化,实现了延迟加载功能,即不展开的节点不创建子节点的 DOM. 2) ...
- MVC小系列(四)【向RouteData里扔数据】
向RouteData里扔数据 当Url做路由之后,QueryString里当然是不可能再存你的信息了,而信息包括控制器,action,参数都会存储在RouteData里,而一般这里的信息都是通过前一个 ...
- Ztree异步树加载
JSP代码片段 <%@ page language="java" contentType="text/html; charset=utf-8" pageE ...
- MVC小系列(八)【改变Areas的FindView顺序】
MVC小系列(八)[改变Areas的FindView顺序] 一般项目比较大的话,会根据模块建立Areas,这样结构清晰,也有利于路由的部署, 1 Areas下有自己的_LayOut模板,而如果希望所有 ...
- MVC小系列(七)【分部视图中的POST】
MVC小系列(七)[分部视图中的POST] 在PartialView中进行表单提交的作用:1 这个表单不止一个地方用到,2 可能涉及到异步的提交问题 这两种情况都可能需要把表单建立在分部视图上, 使用 ...
- struts2官方 中文教程 系列十四:主题Theme
介绍 当您使用一个Struts 2标签时,例如 <s:select ..../> 在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...
- 2.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:
转自:https://www.cnblogs.com/ssslinppp/p/4528892.html 个人认为,使用@ResponseBody方式来实现json数据的返回比较方便,推荐使用. 摘要 ...
随机推荐
- mysql server install
1.首先在mysql的官网www.mysql.com或者其他网站下载mysql.zip或者mis格式的文件目前5.6的差不多300多M. 2.zip压缩包是绿色版的不用安装,直接用dos命令操作就行. ...
- Linux SCP 命令: 利用SSH传输文件
在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地 ...
- 关于FP-Growth 算法一个很好的ppt-学习分享
http://pan.baidu.com/share/link?shareid=1980963149&uk=1594824745
- PHP使用SwiftMailer发送邮件
用到了swiftmailer 的lib库 官方网址:http://swiftmailer.org/ require_once 'lib/swift_required.php';//给我发送邮件func ...
- C++ Primer 练习7.32(C++ Primer读书笔记)
第七章 类 练习7.32 定义你自己的Screen和Window_mgr,其中clear是Window_mgr的成员,是Screen的友元. 由于Window_mgr中含有Screen对象,所以在W ...
- 注册表-在IE上永久显示我的名字"www.baidu.com - 朱建强"
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\新建字符串 名为:window title值为:"朱建强"
- javascript中的function对象
function对象都是Function的实例: > Object.getOwnPropertyNames(Function) [ 'length', 'name', 'arguments', ...
- light oj 1297 Largest Box
1297 - Largest Box PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB In t ...
- codis集群和redis cluster的优劣对比
1.codis架构如下: (1)Codis是一整套缓存解决方案,包含高可用.数据分片.监控.动态扩态 etc..走的是 Apps->代理->redis cluster,一定规模后基本都采用 ...
- offsetWidth和clientWidth的介绍和区别
1.offsetLeft 假设 obj 为某个 HTML 控件. obj.offsetTop 指 obj 间隔上方或上层控件的地位,整型,单位像素. obj.offsetLeft 指 obj 间隔左方 ...