如何使用 MVC ServerSide 包装器创建 HierarchialDataSource 并将其用作 TreeView 的数据源?
我创建了一个层次结构,它作为 Json 从控制器返回,但 TreeView 只显示顶级节点。是否需要在 TreeView 上设置一个属性来指示 DataSource 是分层的?
我看到了几个使用 JS 和 kendo.data 库的客户端示例,但我找不到服务器端等效程序集。
感谢您提供任何帮助。
如何使用 MVC ServerSide 包装器创建 HierarchialDataSource 并将其用作 TreeView 的数据源?
我创建了一个层次结构,它作为 Json 从控制器返回,但 TreeView 只显示顶级节点。是否需要在 TreeView 上设置一个属性来指示 DataSource 是分层的?
我看到了几个使用 JS 和 kendo.data 库的客户端示例,但我找不到服务器端等效程序集。
感谢您提供任何帮助。
据我了解,您要绑定的模型的属性必须与 HierarchicalDataSource 匹配: http ://docs.kendoui.com/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; }
}
我明确地必须使用这种精确的大小写来实现id
andhasChildren
属性(我hasCHildren
在将模型推送到视图之前根据查询填充属性)。
不确定这是否是正确的做法(仍在努力寻找官方信息),但至少它有效。
在您的 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; } }
}