0

http://www.jeasyui.comの「tree」という名前のコントロールを使用しています。しかし、私の場合、最初に最高レベルでロードし、ノードロードの1つをクリックすると子ノードになります。

<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 には正しい構造がありますが、ツリーには新しい要素が表示されません。問題は、ツリーの以前のコンテンツをクリーンアップして新しいコンテンツで埋める方法です。おそらく私は何か間違ったことをしていますか?

4

1 に答える 1

0

jqTree

このツリーには、必要な機能が備わっている必要があります。非常に軽量で使いやすいです。私は宣伝していませんが、数週間前に同じ状況にあり、これが解決策を提供してくれました。また、開かれたノードなどを追跡します...

于 2012-08-14T12:06:15.207 に答える