1

我目前正在使用基本上是 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,但实际上并没有将任何内容添加到树视图中!

我真的不知道在调试方面要尝试什么,我真的很难过。任何帮助/方向将不胜感激。

4

2 回答 2

1

单击展开按钮时是否出现加载动画?

顺便说一句,您在DataTextField中使用了“名称”,但正如我在您的 json 上看到的那样,它没有定义。它会给你“未定义”的节点。尝试用“ text ”替换它。

.DataTextField("text")
于 2013-02-21T03:17:44.673 回答
0

我有类似的问题。在我的情况下,删除 DataTextField 声明并定义 Template 解决了这个问题。

@(Html.Kendo().TreeView().Name("tvNodes")
          .DataSource(ds =>  ds.Read(read => read.Action("ReadLeafTreeNodes", "Classifications")))
          .Template("#=item.Text#")              

更新:这似乎是一个随机问题,我提出的修复方法并非一直有效。刷新页面后它有时可以工作,有时不能。

于 2013-02-04T22:22:12.767 回答