c# - KendoUI 树状 View : remote data issue

标签 c# javascript asp.net-mvc razor kendo-treeview

我有一个 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/

相关文章:

c# - ASP.NET WebAPI 错误 : an exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework. dll 但未在用户代码中处理

c# - XNA 框架 "Vector2"问题。 *第一个节目...*

javascript - 有什么方法可以将参数从一个页面发送到另一个页面而不用在 url 中发送吗?

asp.net-mvc - Viewbag.Title 错误 : One or more types required to compile a dynamic expression cannot be found. 您是否缺少引用?

C#:ResumeLayout(true) 与 ResumeLayout(false) + PerformLayout() 的作用相同吗?

c# - 如何使用 LINQ 从列表中仅选择两列

javascript - LMC 改变 y 值

javascript - 在元素后插入仅打开的 HTML 标签?

javascript - gsap&Angular - onComplete 触发函数但无法更改变量值

c# - 将 : list<>, 对象和基元的混合传递给 ASP MVC Controller 操作的方法