我有一个 Kendo Treeview 。我正在使用 MVC4 和 KendoUI 的最新版本。
我也在使用 sql server 和 C#
假设我有一个名为“MyDB”的数据库和该数据库中名为“Products”的单个表。
表“产品”:
ID -- 整数 -- pk
名称 -- nvarchar(50)
父级 -- int -- FK
我想要一个产品有子产品...
好的,现在在 Controller 中我有:
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")
)
)
)
这可以正常工作并正确显示 Treeview (几乎!),除了 Treeview 在每个节点旁边显示 + ......无论它是否有子节点。
我需要修改我的 LINQ 或者甚至可能使用一些 JavaScript 来删除没有子元素的“+”...
“+”的类名是“k-icon k-plus”。
如何阻止 Treeview 将此“+”附加到每个节点?它应该只显示给有 child 的节点。
最佳答案
我认为问题在于您返回的 JSON 。如果您的 .hasChildren 属性设置为 true ,它将添加 expand('+') 图标。
所以你的 .hasChildren 属性应该有一个 bool 值,只有当 那个节点有 child / child 时才说 true 。在您的情况下,您使用了 e.Id 我认为它不是 bool 值。
试试这个:hasChildren = e.Products.Any()
或者查看他们的文档。
http://demos.kendoui.com/web/treeview/remote-data.html
希望这可以帮助。
关于c# - KendoUI 树状 View : remote data issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13903279/