【发布时间】:2015-11-16 12:02:51
【问题描述】:
我有一个存储过程,它使用 EF 从 SQL 数据库返回分层数据。 树视图仅显示父节点,不显示子节点。我一直在研究这个问题一段时间,但没有任何结果,这令人沮丧。感谢您在此问题上提供的任何帮助。
ParentId Id Title Level
--------- ---------- ----------------------------- ------
NULL 1 Chief Executive Officer 0
1 273 Vice President of Sales 1
273 16 Marketing Manager 2
273 274 North American Sales Manager 2
273 285 Pacific Sales Manager 2
16 23 Marketing Specialist 3
274 275 Sales Representative 3
274 276 Sales Representative 3
285 286 Sales Representative 3
在服务层,我有一个编排器类,它返回上面的表格。
public IEnumerable<TreeviewItem> GetBusinessStructure()
{
return Context.ExecuteStoreQuery<TreeviewItem>("spGetEmployees");
}
模型类
public class TreeviewItem
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public virtual TreeviewItem Parent { get; set; }
public virtual ICollection<TreeviewItem> Children { get; set; }
}
控制器
public JsonResult BusinessStructure(int? id)
{
var model = from e in BusinessStructureOrchestrator.GetBusinessStructures()
where (id.HasValue ? e.ParentId == id : e.ParentId == null)
select new
{
id = e.Id,
Name = e.Name,
hasChildren = e.Children.Any()
};
return Json(model, JsonRequestBehavior.AllowGet);
}
景色
@model FilterBusinessStructureViewModel
<div class="form-group">
<label for="" class="col-sm-12 control-label">Choose Divisions/BUs/Sites</label>
<div class="col-sm-12">
@(Html.Kendo().TreeView()
.Name("tvBusinessStructure")
.DataTextField("Name")
.Checkboxes(checkedboxes => checkedboxes
.Name("SelectedDivision")
.CheckChildren(true)
)
.DataSource(dataSource => dataSource
.Model(m => m
.Id("Id")
.HasChildren("hasChildren")
.Children("Children"))
.Read(read => read
.Action("BusinessStructure", "Report")
)
)
)
</div>
【问题讨论】:
标签: entity-framework model-view-controller kendo-ui hierarchy