我目前正在使用Kendo UI Treeview文档中的“远程数据”示例的副本......但是我似乎在加载任何子节点时遇到了问题。
查看:
<div class="treeview">
@(Html.Kendo().TreeView()
.Name("treeview")
.DataTextField("Name")
.DataSource(dataSource => dataSource
.Read(read => read
.Action("Pages", "Page", new { Area = "Admin" })
)
)
)
</div>
方法:
public JsonResult Pages(int? id)
{
var pages = _page.Items;
if(id.HasValue)
{
pages = pages.Where(u => u.Parent.Id == id);
}
else
{
pages = pages.Where(u => u.Parent == null);
}
var pagesToReturn = from p in pages
select new {
id = p.Id,
text = p.Title,
hasChildren = p.Children.Any()
};
return Json(pagesToReturn, JsonRequestBehavior.AllowGet);
}
但是出于某种原因,单击以展开节点似乎实际上没有做任何事情。如果我使用Firefox的Net选项卡查看数据传输,我可以看到它实际上是转到方法并为子节点返回正确的JSON,但实际上没有任何内容添加到树视图中!
我不确定在调试方面要尝试什么,我真的很难过。任何帮助/指示将不胜感激。
答案 0 :(得分:1)
单击展开按钮时是否显示加载动画?
顺便说一句,您在 DataTextField 中使用了“ 名称 ”,但正如我在您的jSon上看到的那样,它未定义。它将为您提供“未定义”节点。尝试将其替换为“ text ”。
.DataTextField("text")
答案 1 :(得分:0)
我有类似的问题。在我的情况下删除DataTextField声明和定义模板修复了这个问题。
@(Html.Kendo().TreeView().Name("tvNodes")
.DataSource(ds => ds.Read(read => read.Action("ReadLeafTreeNodes", "Classifications")))
.Template("#=item.Text#")
更新: 它似乎是一个随机问题,我提出的修复方法并不是一直都在运行。刷新页面后,它有时会起作用,有时却不起作用。