LigerUI 樹控件數據異步加載

當需要綁定到樹中的數據量比較大的情況下,需要採用延遲數據加載來解決這個問題,樹的異步加載從理論上完全可以實現,樹中的數據量來自於子節點套子節點,當無數的子節點一塊綁定顯示的時候,會產生數據無法顯示的問題。

延遲數據加載,首先會把樹的第一級節點綁定到樹中,當打開第一級節點的時候,通過後臺調用的方式獲取當前結點的下一級節點內容,由於下級節點有可能又有子節點或者葉子節點,所以需要通過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" });
                }               
            }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章