2

如何使用 MVC ServerSide 包装器创建 HierarchialDataSource 并将其用作 TreeView 的数据源?

我创建了一个层次结构,它作为 Json 从控制器返回,但 TreeView 只显示顶级节点。是否需要在 TreeView 上设置一个属性来指示 DataSource 是分层的?

我看到了几个使用 JS 和 kendo.data 库的客户端示例,但我找不到服务器端等效程序集。

感谢您提供任何帮助。

4

2 回答 2

1

据我了解,您要绑定的模型的属性必须与 HierarchicalDataSource 匹配: http ://docs.kendoui.c​​om/api/framework/hierarchicaldatasource

我正在使用树视图来显示菜单结构,所以这是我的模型:

public class Menu
{
    public int Id { get; set; }
    public int? ParentId { get; set; }
    public string Description { get; set; }

    public int id
    {
        get { return this.Id; }
    }                

    public bool hasChildren { get; set; }
}

我明确地必须使用这种精确的大小写来实现idandhasChildren属性(我hasCHildren在将模型推送到视图之前根据查询填充属性)。

不确定这是否是正确的做法(仍在努力寻找官方信息),但至少它有效。

于 2013-08-16T12:50:30.743 回答
0

在您的 cshtml 文件中使用它:

@(Html.Kendo().TreeView()
   .Name("trvReport")
   .DataTextField("Name")
   .DataSource(dataSource => dataSource
      .Read(read => read.Action("ReportType", "Read"))
      .Model(model =>
      {
        model.Id("Id");
        model.Field("Name", typeof(string));
        model.Children("Reports");
        model.HasChildren("HasReports");
      })
   )
)

在您的模型中实现 HasChildren,如下所示:

public class ReportType
{
    public int Id { get; set; }
    public string Name { get; set; }

    public ICollection<Report> Reports { get; set; }

    [NotMapped]
    public bool HasReports { get { return Reports.Count() > 0; } }
}
于 2016-12-12T12:47:23.853 回答