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