功能说明
基于zTree v3.1插件构建利用Json数据传输,并提供了以下主要功能:
构建节点实体各属性介绍
通过连缀方法设置节点的各属性
TreeNode.New() | |
.SetChecked() | 设置节点的选中状态(默认为false) |
.SetIconName() | 设置节点的图标选择器名供CSS使用(默认为空) |
.SetId() | 设置节点的ID(必填) |
.SetName() | 设置节点的名字(必填) |
.Open() | 设置节点展开状态(如果是父节点则有效,默认为false) |
.SetParent() | 设置是否为父节点(默认为false) |
.SetParentId() | 作为子节点设置其父节点ID(必填,如果此节点为根节点则默认填null可通过Tree设置修改根节点属性值标识) |
.SetTarget() | 设置Target (默认为null) |
.SetUrl() | 设置URL(默认null) |
.MergeNodeAttribute() | 设置额外的属性(必须保证不能与Ztree官网API的属性重名) |
.ToUnobtrusiveHtmlAttributes() | 获取整合后的属性字典的方法,主要用于动态加载获取数据中 |
构建Tree设置各属性介绍
通过连缀方法设置Tree的各属性
TreeOptions.New() | |
.MergeTreeCallBack() | 设置额外的回调函数事件(事件名称和参数必须和Ztree官方一致,ZtreeAPI官网callback处) |
.MergeTreeSetOption() | 设置额外的setting设置注意事项 |
.SetAsyncUrl() |
设置异步加载的URL路径(注意在Action内用于接收父节点的参数名必须是parentId) 详情看示例源代码 |
.SetRootId() | 设置根节点ID的属性标识,(默认为null) |
.SetIsRemove() | 设置是否开启可删除功能(默认为false) |
.SetIsRename() | 设置是否开启可改名功能(默认为false) |
.SetIsDrag() | 设置是否开启可拖拽功能(默认为false) |
.SelectBoxTypes() | 设置需要开启的勾选框类型(默认为null) |
.SinglePath() | 设置是否开启单一路径功能 |
.RadioBoxTypes() | 设置单选框范围 (如果勾选框设置为Radio单选类型则设置此值,不设置默认为level) |
支持异步按需加载子节点
回顶部View代码:
@* treeNodes参数可以为空,通过ViewData传值,ViewData的名字与name参数的名字必须一样*@ @Html.Tree("TreeAsyncDemo",TreeOptions.New() .SetAsyncUrl(Url.Action("AsyncGetTreeNodes")))
Action代码:
/// <summary> /// 异步加载父节点获取子节点 /// </summary> /// <param name="parentId">父节点ID (参数名称必须是parentId 注意大小写)</param> /// <returns></returns> [HttpPost] public JsonResult AsyncGetTreeNodes(string parentId) { //GetTreeBuilderNodes()此方法用于异步加载提供数据 返回数据类型(List<TreeNode>) //筛选符合条件的子节点 IEnumerable<Dictionary<string, object>> listTreeNodes = GetTreeBuilderNodes().FindAll ( n => n.ParentId == parentId ) .Select ( n => n.ToUnobtrusiveHtmlAttributes() ); return Json(listTreeNodes); } [HttpGet] public ActionResult TreeExample() { // GetInitTreeNodes() 此方法用于返回初始化数据的Tree集合(返回类型为List<TreeNode>) //示例异步加载 ViewData["TreeAsyncDemo"] = GetInitTreeNodes(); return View(null, "app-home-2cols"); }
支持单一路径、数据集合参数可以为空、通过ViewData传值
回顶部View代码:
@* treeNodes参数可以为空,通过ViewData传值,ViewData的名字与name参数的名字必须一样*@ @Html.Tree("TreeSinglePathDemo", TreeOptions.New() .SinglePath(true))
Action代码:
[HttpGet] public ActionResult TreeExample() { // GetInitTreeNodes() 此方法用于返回初始化数据的Tree集合(返回类型为List<TreeNode>) //示例单一路径 ViewData["TreeSinglePathDemo"] = GetInitTreeNodes(); return View(null, "app-home-2cols"); }
支持拖拽改名删除
回顶部View代码:
@Html.Tree("TreeEditDemo", TreeOptions.New() .SetIsDrag(true) .SetIsRename(true) .SetIsRemove(true) )
Action代码
[HttpGet] public ActionResult TreeExample() { // GetInitTreeNodes() 此方法用于返回初始化数据的Tree集合(返回类型为List<TreeNode>) //示例拖拽 ViewData["TreeEditDemo"] = GetInitTreeNodes(); return View(null, "app-home-2cols"); }
支持单复选
回顶部View代码:
@* 复选按钮*@ @Html.Tree("TreeCheck", TreeOptions.New() .SetCheckStyle(ChoiceBoxType.Checkbox) .SetAsyncUrl(Url.Action("AsyncGetTreeNodes"))) @* 单选按钮 如果设置单选按钮请设置单选按钮的范围 默认为层级范围(level)*@ @Html.Tree("TreeRadio", TreeOptions.New() .SetCheckStyle(ChoiceBoxType.Radio) .SetRadioType(RadioBoxType.Level) .SetAsyncUrl(Url.Action("AsyncGetTreeNodes")))
Action代码
[HttpGet] public ActionResult TreeExample() { // GetInitTreeNodes() 此方法用于返回初始化数据的Tree集合(返回类型为List<TreeNode>) //示例复选框 ViewData["TreeCheck"] = GetInitTreeNodes(); //示例单选框 ViewData["TreeRadio"] = GetInitTreeNodes(); return View(null, "app-home-2cols"); }
支持更多事件扩展
添加了展开前回调事件,展开后回调事件,和点击节点事件
回顶部View代码:
@Html.Tree("TreeDemo", TreeOptions.New() .SetIsDrag(true) .SinglePath(true) .MergeTreeCallBack("onClick", "onClickFn") .SetAsyncUrl(Url.Action("AsyncGetTreeNodes")) .MergeTreeCallBack("onExpand", "addOnExpand") .MergeTreeCallBack("beforeExpand", "addBeforeExpand"))
Action代码:
[HttpGet] public ActionResult TreeExample() { // GetInitTreeNodes() 此方法用于返回初始化数据的Tree集合(返回类型为List<TreeNode>) //示例事件 ViewData["TreeDemo"] = GetInitTreeNodes(); return View(null, "app-home-2cols"); }
Javascript代码:
<script type="text/javascript" language="javascript"> function addOnExpand(event, treeId, treeNode) { alert("示例触发展开后回调" + treeNode.name); }; function onClickFn(event, treedId, treeNode, clickFlaf) { alert("示例点击事件" + treeNode.tId + "," + treeNode.name); } function addBeforeExpand(treeId, treeNode) { alert("示例触发展开前回调" + treeNode.name); } </script>