2012-08-14 5 views
0

http://www.jeasyui.com에서 'tree'라는 컨트롤을 사용하고 있습니다. 하지만 제 경우에는 첫 번째 최상위 레벨에서로드하고 노드 노드 중 하나를 클릭하면 자식 노드가로드됩니다. 이 기능에 동적 트리 컨트롤

<ul id="tt" checkbox="true" animate="true"></ul> 

    $(function() { 
     $('#tt').tree({ 
       data: @Html.Raw(Model.Tree) 
      }); 
    }); 

나는 DB에서 선택된 노드의 차일 노드를 얻을 : 방법 LoadDepartments에서

$(function() { 
     $('#tt').tree({ 
       onBeforeExpand: function(node) { 
        var hospitalId = node.id; 

      $.getJSON('@Url.Action("LoadDepartments")', { hospitalId: hospitalId }, function() { 
       }); 
       }});}); 

    [HttpGet] 
     public ActionResult LoadDepartments(Guid hospitalId) 
     { 

      LoadHospitals(); 
      var departments = _templateAccessor.GetDepartments(hospitalId); 
      var hospital = tree.Where(obj => obj.id == hospitalId.ToString()).FirstOrDefault(); 
      if (hospital != null) 
      { 
       foreach (var department in departments) 
       { 
        DataTreeModel dep = new DataTreeModel(); 
        dep.id = department.Id.ToString(); 
        dep.text = department.Name; 
        dep.state = "closed"; 
        hospital.children.Add(dep); 
        hospital.state = "open"; 
       } 
      } 

       var result = SerializeToJsonString(tree); 
     return Json(result, JsonRequestBehavior.AllowGet); 
     } 

나는 올바른 구조를 가지고 있지만, 나무는 새로운 요소를 표시하지 않습니다. 문제는 트리의 이전 내용을 정리하고 새 내용으로 채우는 방법입니다. 아마도 내가 잘못된 것을하고 있습니까?

+0

JavaScript 코드는 일부 JSON을 예상하지만 동작이보기를 반환합니다. 그 맞습니까? – Suhas

+0

나는 정확하지만 그 결과는 동일합니다 – revolutionkpi

+2

'return Json (hospital, JsonRequestBehavior.AllowGet);으로 마지막 두 줄을 대체 할 것입니다 – Suhas

답변

0

jqTree

이 나무는 매우 가볍고 사용하기 쉬운, 당신이 필요로하는 기능을 가져야한다. 나는 광고가 아니지만 2 주 전 같은 상황에 처해 있었고 이것은 해결책을 제시했습니다. 또한 열린 노드 등을 추적 할 것입니다 ...

+0

나는 어떤 경우에도 http://www.jeasyui.com에서 컨트롤을 사용할 것이며, 감사 – revolutionkpi