2012-08-14 58 views
0

我从http://www.jeasyui.com使用名为'tree'的控件。但在我的情况下,我想加载在第一个最高级别,然后点击其中一个节点加载它的子节点。动态树形控件

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

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

我获得选择的节点的孩子的节点从DB:

$(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); 
     } 

在方法LoadDepartments我有正确的结构,但树不显示新元素。问题是如何清理树的以前的内容并填充新的内容,也许我做错了什么?

+0

您的JavaScript代码需要一些JSON,但您的操作会返回一个视图。那是对的吗? – Suhas 2012-08-14 10:50:24

+0

我纠正,但结果是相同的 – revolutionkpi 2012-08-14 11:12:33

+2

我可能会用'return Json(hospital,JsonRequestBehavior.AllowGet)替换最后两行;' – Suhas 2012-08-14 11:23:29

回答

0

jqTree

这棵树应该有你需要的功能,这是非常轻便,易于使用。我不是做广告,但几周前我处于同样的情况,这为我提供了一个解决方案。它也将跟踪打开的节点等...

+0

我会在任何情况下使用来自http://www.jeasyui.com的控件,谢谢 – revolutionkpi 2012-08-14 12:26:05