0

我有一个 KendoTreeview。我正在使用 MVC4 和 KendoUI 的最新版本。我也在使用 sql server 和 C#

假设我有一个名为“MyDB”的数据库,该数据库中有一个名为“Products”的表。

表“产品”: ID -- int -- pk Name -- nvarchar(50) Parent -- 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”。

如何阻止树视图将此“+”附加到每个节点?它应该只显示给有子节点的节点。

4

1 回答 1

0

我认为问题在于您返回的JSON如果您的.hasChildren属性设置为true,它将添加 expand('+') 图标。

所以你的.hasChildren属性应该有一个布尔值,只有当该节点有子/子时才表示 true 。在您的情况下,您使用了我认为不是布尔值的e.Id 。

尝试这个:

hasChildren = e.Products.Any()

或者查看他们的文档。 http://demos.kendoui.c​​om/web/treeview/remote-data.html

希望这可以帮助。

于 2013-02-21T03:59:36.807 回答