【问题标题】:Dynamic tree control动态树控制
【发布时间】:2012-08-14 20:06:15
【问题描述】:

我正在使用来自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 中,我的结构正确,但树没有显示新元素。问题是如何清理树的先前内容并用新内容填充它,也许我做错了什么?

【问题讨论】:

  • 您的 JavaScript 代码需要一些 JSON,但您的操作会返回一个视图。对吗?
  • 我是正确的,但结果是一样的
  • 我可能会将最后两行替换为return Json(hospital, JsonRequestBehavior.AllowGet);

标签: c# javascript asp.net-mvc jquery


【解决方案1】:

jqTree

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2020-09-19
    • 2011-06-29
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多