2012-12-16 56 views
0

我有一個KendoTreeview。我使用MVC4和KendoUI的最新版本。 我也使用SQL服務器和C#KendoUI treeview:遠程數據問題

比方說,我有一個名爲「MyDB」的數據庫和該數據庫中的一個名爲「產品」的表。

表 「產品」: 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-圖標k-plus「。

如何停止treeview將此「+」添加到每個節點?它只應顯示給有孩子的節點。

回答

0

我認爲問題在於你回來了JSON。如果您的.hasChildren屬性設置爲true,它將添加展開('+')圖標。

所以你.hasChildren屬性應該有一個布爾值,說真的只有該節點有子/兒童。在你的情況,你使用e.Id我認爲這不是一個布爾值。

試試這個:

hasChildren = e.Products.Any() 

或檢查出自己的文檔。 http://demos.kendoui.com/web/treeview/remote-data.html

希望這會有所幫助。