2013-01-21 62 views
1

我目前使用的是Kendo UI樹視圖文檔中的「遠程數據」示例的副本......但是我似乎遇到了加載任何子節點的問題。Kendo UI樹視圖 - 節點不會擴展

查看:

<div class="treeview"> 
    @(Html.Kendo().TreeView() 
     .Name("treeview") 
     .DataTextField("Name") 
     .DataSource(dataSource => dataSource 
      .Read(read => read 
       .Action("Pages", "Page", new { Area = "Admin" }) 
      ) 
     ) 
    ) 
</div> 

方法:

public JsonResult Pages(int? id) 
{ 
    var pages = _page.Items; 

    if(id.HasValue) 
    { 
     pages = pages.Where(u => u.Parent.Id == id); 
    } 
    else 
    { 
     pages = pages.Where(u => u.Parent == null); 
    } 


    var pagesToReturn = from p in pages 
         select new { 
          id = p.Id, 
          text = p.Title, 
          hasChildren = p.Children.Any() 
         }; 

    return Json(pagesToReturn, JsonRequestBehavior.AllowGet); 
} 

但是由於某些原因,單擊以展開節點似乎並沒有真正做任何事情。如果我使用Firefox的Net選項卡來查看數據傳輸,我可以看到它實際上是去了方法併爲子節點返回正確的JSON,但實際上沒有任何內容被添加到樹視圖中!

我真的不確定在調試它時嘗試什麼,我真的很難過。任何幫助/方向將不勝感激。

回答

1

單擊展開按鈕時是否顯示加載動畫?

順便說一句,你用「名稱」在DataTextField但我可以在你的JSON看到,它沒有定義。它會給你「未定義」的節點。嘗試將其替換爲「text」。

.DataTextField("text") 
+0

我試過了,加載動畫出現,JSON正在返回,但沒有任何東西正在被添加。 編輯:沒關係,這似乎現在工作! – Liggi

0

我有類似的問題。在我的情況下,刪除DataTextField聲明和定義模板解決了這個問題。

@(Html.Kendo().TreeView().Name("tvNodes") 
      .DataSource(ds => ds.Read(read => read.Action("ReadLeafTreeNodes", "Classifications"))) 
      .Template("#=item.Text#")    

UPDATE: 看來,這是一個隨機的問題,我所提出的修正並非所有的工作時間。刷新頁面後,它有時會起作用,有時不起作用。