jquery easyui tree 异步加载数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//遇到的主要问题是,展开两次会重复加载,所以在属性中建立标志位,来看是否已经有了子节点(需要注意的是如果 添加了节点就要重新初始化了,否则如果有节点就不会再去请求了),<br>第二个困难时,无法刷新数据,附加上了节点,必须折叠再展开才行,代码需要加上<br>function initTree() {
              myUrl = "../../Organization/GetOrganizationTree";
              $.post(
                    myUrl,
                    {"isPost": 1},
                    function (data) {
                         
                        $("#mytree").tree({ 
                            data: data,
                            lines:true,
                            onClick : function(node) { 
                                $.cookie("level", node.attributes.level);
                                if (node.attributes.level == 4) {
                                    $.cookie("curNodeId", node.id.substring(0, node.id.indexOf(‘_‘)));
                                    $.cookie("curIsEm", node.attributes.isEm);
                                     
                                }
                                else if (node.attributes.level == 5) {
 
                                }
                                else {                                   
                                    $.cookie("curNodeId", node.id);
                                }
                            },
                            onBeforeExpand: function (node) {
                                if (node.attributes.level == 4) {
 
                                    //alert(node.id+" " + node.id.indexOf("_") +" "+ node.id.substring(0, node.id.indexOf("_") - 1));
                                    appendPost(node.id.substring(0, node.id.indexOf(‘_‘)),1, node, node.attributes.isEm);
                                }
                                else if (node.attributes.level == 5) {
                                    appendPost(node.id, 0, node, node.attributes.isEm);
 
                                }
                            }
 
                        });
                    },
                    "json");
 
 
               
          }         
 
          //添加(根据父角色查询岗位)
          function appendPost(parentId, isFirst, node, isEm) {
              $.post(
                     "../../PostManage/GetGeneralPostForTree",
                     {
                         "parentId": parentId,
                         "isFirst": isFirst,
                         "isEm": isEm
                     },//本层的是节点是 nodePostKind,orgId是上一层的node变量
                     function (jsonPost) {
                         //如果当前没有请求道数据
                         if (node.attributes.hasNode == 0 && jsonPost.postList != "") {
                              
                             $(‘#mytree‘).tree(‘append‘, {
                                 parent: node.target,
                                 data: jsonPost.postList
                             });
                             node.attributes.hasNode = 1;
                             //因为附加上之后无法自动刷新,所以先合并再
                             $("#mytree").tree(‘collapse‘, node.target);
                             $("#mytree").tree(‘expand‘, node.target);
                         }
                          
                          
                          
                     },
                     "json"
                 );
 
          }

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/// <summary>
 /// 获取组织结构树(感觉有点慢,后期改成异步加载)
 /// </summary>
 /// <param name="isPost">是否需要岗位分类信息加载</param>
 /// <returns></returns>
 public string GetOrganizationTree(int isPost)
 {
     StringBuilder result = new StringBuilder();
     result.Append("[{\"id\":\"0\",\"text\":\"组织结构\",\"attributes\":{\"isKind\":\"-1\",\"level\":\"1\"},\"children\": ");
 
     OrganizationServiceRef.ORGANIZATION_KIND[] orgKind = orgClient.GetOrgKindModelList();
 
     result.Append("[");//肯定有分类这一层
     foreach (var kindItem in orgKind)
     {
         result.Append("{\"id\":\"" + kindItem.PK_ORG_KIND_ID + "\",\"text\":\"" + kindItem.ORG_TYPE_NAME + "\",\"attributes\":{\"isKind\":\"1\",\"level\":\"2\"}");//,\"state\":\"closed\",\"attributes\":[{\"isKind\":\"1\"}]
         OrganizationServiceRef.ORGANIZATION[] org = orgClient.GetOrganizationModelList(kindItem.PK_ORG_KIND_ID, "");
             if (org.Length > 0)
             {
                 result.Append(",\"children\":[");
                 foreach (var orgItem in org)
                 {
                     result.Append("{\"id\":\"" + orgItem.PK_ORG_ID + "\",\"text\":\"" + orgItem.ORG_FULL_NAME + "\"," +
                         "\"attributes\":{\"isKind\":\"0\",\"orgShortName\":\"" + orgItem.ORG_NAME + "\",\"orgCode\":\"" + orgItem.ORG_CODE + "\",\"orgIcon\":\"../../" + orgItem.ORG_ICON + "\",\"level\":\"3\"}");
                     if (isPost==1)//如果有岗位分类信息那么添加子节点
                     {
                         result.Append(",\"children\":[{\"id\":\"" + orgItem.PK_ORG_ID + "_1\",\"text\":\"岗位类型1\",\"state\": \"closed\",\"attributes\":{\"hasNode\":\"0\",\"isEm\":\"1\",\"level\":\"4\"}},{\"id\":\"" + orgItem.PK_ORG_ID + "_2\",\"text\":\"岗位类型2\",\"state\": \"closed\",\"attributes\":{\"hasNode\":\"0\",\"isEm\":\"0\",\"level\":\"4\"}}]");
                     
                     }
                      result.Append( " },");
                 }
                 result.Remove(result.Length-1,1);
                 result.Append("]");
             }
             else
             {
                 result.Append("");
             }
 
          result.Append("},");
 
     }
 
     result.Remove(result.Length - 1, 1);
     result.Append("]");//第一层的children end
 
      
 
     result.Append(" }]");
     return result.ToString();
 
 }

 因为我现在做的这个是组织机构和岗位放在两个表中,以上只是生成了组织的结构,加上岗位类型。

 

再展开岗位类型的时候用到了异步加载,后台代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public string GetGeneralPostForTree(string parentId, string isFirst, string isEm)
       {
            
             RoleServiceRef.ROLE[] postList=roleClient.GetGeneralPostList(parentId,isFirst,isEm);
             StringBuilder sbJsonPost = new StringBuilder();
             sbJsonPost.Append("{\"postList\":[ ");
             if (postList.Length > 0)
             {
 
 
                 foreach (var post in postList)
                 {
                     if (!(bool)post.ROLE_IS_POST)//如果不是岗位,那么在下边添加一个默认的节点,这个添加的节点在展开时如果有数据则删除掉,没有则存在加标示。
                     {
                         sbJsonPost.Append("{\"id\":\"" + post.PK_ROLE_ID + "\",\"text\":\"" + post.ROLE_NAME + "\",\"state\":\"closed\"}");
 
                     }
                     else
                     {
                         sbJsonPost.Append("{\"id\":\"" + post.PK_ROLE_ID + "\",\"text\":\"" + post.ROLE_NAME + "\"}");
 
                     }
 
                     sbJsonPost.Append(",");
                 }
                 sbJsonPost.Remove(sbJsonPost.Length-1, 1);
             }
             sbJsonPost.Append("]}");
 
 
             return sbJsonPost.ToString();
 
       }

jquery easyui tree 异步加载数据,布布扣,bubuko.com

jquery easyui tree 异步加载数据

上一篇:jQuery dataTables 网格


下一篇:python 回溯法 子集树模板 系列 —— 4、数字组合问题