其實Ztree官網已經有詳細的API文檔,一切以官網上的說明為準,我在此只是結合實踐總結幾條常用的ztree的功能特性.
(ztree的文法結構是基於key-value的形式配置)
1:支援非同步載入資料
文法配置:
async: {enable: true, url:'abc.ashx',otherParam: { "request": "requestname" }}
簡要說明:
enable :設定 zTree 是否開啟非同步載入模式.
url:Ajax 擷取資料的 URL 地址.
otherParam:Ajax 請求提交的靜態參數索引值對.相當於ajax中的data參數.
2:載入資料並綁定,一般都是定義資料結構實體即model,此資料結構要包含層級關係通常包括:ID,父ID,Name.
然後配置文法:
data: {simpleData: {enable: true}}
或者
data: {key: {children: "childrens",checked: "IsChecked"}}
簡要說明:
simpleData:即可採用數組作為資料來源綁定.此時非同步載入的資料可為平行結構.
children: 指定節點資料中儲存子節點資料的屬性名稱,此時非同步載入的資料為樹的摺疊結構;所以後端載入資料時要使用遞迴演算法.
3:支援單選,複選功能
文法配置:
check: {enable: true,chkStyle: "checkbox",radioType: "all"chkboxType:{ "Y": "", "N": "" }},data: {key: {checked: "IsChecked"}}
簡要說明:
enable:設定 zTree 的節點上是否顯示 checkbox / radio
chkStyle:勾選框類型(checkbox 或 radio)
radioType:radio 的分組範圍
chkboxType:勾選 checkbox 對於父子節點的關聯關係
checked:為載入資料後複選框是否勾選.IsChecked為後端資料結構model中定義的欄位.
4:支援添加子節點,編輯節點,刪除節時間點事件
我這裡介紹如何採用自訂添加,編輯,刪除按鈕的方式
文法配置:
view: {addHoverDom: addHoverDom,removeHoverDom: removeHoverDom }
其中addHoverDom 函數為:
function addHoverDom(treeId, treeNode) {var sObj = $("#" + treeNode.tId + "_span");if ($("#addBtn_" + treeNode.id).length > 0) return;var str= "<a id='addBtn_" + treeNode.id + "' onclick='自訂函數1(" + treeNode.DepartmentID + ")'>添加子節點</a>";str+= "<a id='addBtn1_" + treeNode.id + "' onclick='自訂函數2(" + treeNode.DepartmentID + ")'>編輯節點</a>";str+= "<a id='addBtn2_" + treeNode.id + "' onclick='自訂函數3(" + treeNode.DepartmentID + ")'>刪除節點</a>";sObj.after(str);};
其中removeHoverDom函數為:
function removeHoverDom(treeId, treeNode) {$("#addBtn_" + treeNode.id).unbind().remove();$("#addBtn1_" + treeNode.id).unbind().remove();$("#addBtn2_" + treeNode.id).unbind().remove(); };
簡要說明:
addHoverDom:用於當滑鼠移動到節點上時,顯示使用者自訂控制項,顯示隱藏狀態同 zTree 內部的編輯、刪除按鈕
removeHoverDom:用於當滑鼠移出節點時,隱藏使用者自訂控制項,顯示隱藏狀態同 zTree 內部的編輯、刪除按鈕