當需要綁定到樹中的數據量比較大的情況下,需要採用延遲數據加載來解決這個問題,樹的異步加載從理論上完全可以實現,樹中的數據量來自於子節點套子節點,當無數的子節點一塊綁定顯示的時候,會產生數據無法顯示的問題。
延遲數據加載,首先會把樹的第一級節點綁定到樹中,當打開第一級節點的時候,通過後臺調用的方式獲取當前結點的下一級節點內容,由於下級節點有可能又有子節點或者葉子節點,所以需要通過type來標識,比如 節點使用department,葉子使用employee來標識員工與部門之間的關係。
後臺數據的綁定需要最好按照固定的格式綁定,一般按照id,pid,type,text的方式與樹的節點的屬性相對應。
在綁定完數據後需要通過屬性賦值來標識下:
idFieldName: 'id',
parentIDFieldName: 'pid',
前端請求示例如下:
$(function ()
{
$("#treeDepart").ligerTree({
nodeWidth: 300,
url: '../AttendanceGroup/GetSelectUser',
isLeaf: function (data) {
if (!data) return false;
return data.type == "employee";
},
delay: function (e) {
var data = e.data;
if (data.type == "department") {
return {
url: '../AttendanceGroup/GetSelectUser?prevId=' + data.id
}
}
return false;
},
checkbox: true,
idFieldName: 'id',
parentIDFieldName: 'pid',
slide: false,
onCheck: checkEle
});
});
後臺數據賦值操作:
foreach (RCSA_DepartmentModel depobj in list)
{
if (depobj.parentId == null || depobj.parentId.Length == 0)
{
rlist.Add(new { id = depobj.departmentId, pid = 0, text = depobj.departmentName,type= "department" });
}
else {
rlist.Add(new { id = depobj.departmentId, pid = depobj.parentId, text = depobj.departmentName, type = "department" });
}
}