2012-02-16 3 views
0

하나의 호출에 전체 트리를로드jstree이 -이 사용하고

$('#topicTree').jstree({ 
     "json_data" : { 
      "ajax" : { 
       url : serviceUrl 
      } 
    }, 
    "plugins" : ["themes", "json_data", "ui", "crrm", "hotkeys"] 
}); 

을하지만 노드를 클릭 할 때 그것은 아약스 요청을 재 소성 및 검색하고 다시 전체 최상위 트리 노드와 노드를 채 웁니다. 나는 수요 또는 지연로드 기능에있다 알지만, "가능하면 나는 또한 다음과 같은 사용했습니다 것을 방지하기 위해 노력하고있어 :.

$("#tree").jstree({ 
    "plugins" : ["themes", "json_data", "ui", "crrm", "hotkeys"], 
    "json_data" : { 
     "ajax" : { 
      "type": 'GET', 
      "url": function (node) { 
       //debugger; 
       var nodeId = ""; 
       var url = ""; 
       if (node == -1) 
       { 
        url = "/ajax/gettopics/"; 
       } 
       return url; 
      }, 
      "success": function (data) { 
       //debugger; 
       return data; 
      }, 
      "error":function(data) { 
       //debugger; 
       alert("error loading tree!"); 
      } 
     } 
    } 
}).bind("loaded.jstree", function (event, data) { 
    //alert("TREE 2 IS LOADED!"); 
}); 

답변

1

좋아, 그래서 문제를 발견 ... 내 DTO를 JSON은 대소 문자를 구별에 그 직렬화 악마는 세부 사항에 - 나는에서 이름 지정 규칙을 전환 :. 어린이 자본 'C'는 정말 약간의 혼란을 원인이

public class JsTreeJsonNode 
{ 
    public string data { get; set; } 
    public Dictionary<string, string> attr { get; set; } 
    public string state { get; set; } 
    public List<JsTreeJsonNode> Children { get; set; } 
} 

public class JsTreeJsonNode 
    { 
     public string data { get; set; } 
     public Dictionary<string, string> attr { get; set; } 
     public string state { get; set; } 
     public List<JsTreeJsonNode> children { get; set; } 
    } 

합니다. 그르 ...

자식 dict이 채워지는 경우 ajax 요청은 null로 반환되거나 내 시나리오에서 잘 작동하는 비어있는 멤버 (제로 멤버)가 아니라면 발효되지 않습니다.

관련 문제