我有一个KendoTreeview。我正在使用MVC4和最新的KendoUI。 我也在使用sql server和C#
假设我有一个名为“MyDB”的数据库和该数据库中名为“Products”的单个表。
表“产品”: ID - int - pk 名称 - nvarchar(50) 父 - int - FK
我希望产品有子产品......
好的,现在我在控制器中:
public JsonResult ProductsForTreeView(int? id)
{
var dataContext = new ProductsDBContext();
var products = from e in dataContext.Products
where ( id.HasValue ? e.Parent == id : e.Parent == 0)
select new
{
id = e.Id,
Name = e.Name,
hasChildren = e.Id
};
return Json(products , JsonRequestBehavior.AllowGet);
}
观点:
@(Html.Kendo().TreeView()
.Name("treeview")
.DataTextField("Name")
.HighlightPath(true)
.DataSource(dataSource => dataSource
.Read(read => read
.Action("ProductsForTreeView", "SiteMap")
)
)
)
这可以正常显示树视图(几乎没有!),只是树视图在每个节点旁边显示+,无论它是否有子节点。
要么我需要修改我的LINQ,要么甚至可以使用一些JavaScript删除没有子元素的“+”...
“+”的班级名称是“k-icon k-plus”。
如何阻止树视图将“+”附加到每个节点?它只应显示给有子节点的节点。
答案 0 :(得分:0)
我认为问题在于您返回 JSON 。如果 .hasChildren 属性设置为 true ,它会添加展开('+')图标。
因此,您的 .hasChildren 属性应该具有一个布尔值,该值仅在该节点具有子/子项时才显示为。在您的情况下,您使用 e.Id ,我认为这不是布尔值。
试试这个:
hasChildren = e.Products.Any()
或查看他们的文档。 http://demos.kendoui.com/web/treeview/remote-data.html
希望这有帮助。