2012-05-21 66 views
1

我想綁定來自json的數據。在控制器中,我送MVC3 JSON Telerik MVC TreeView Javascript

...... 
public JsonResult LoadTree() 
........ 
return Json(jn, JsonRequestBehavior.AllowGet); 

在調試我得到JN值(47項,每項有兩個enteries(文本和值)。

在視圖中,我使用下面的腳本:

function onDataBinding(e) { 
    var url = 'CourseCases/LoadTree'; 
    var result; 
    $.ajax({ 
     url: url, 
     data: {}, 
     contentType: "application/json", 
     success: function (data) { 
      alert(data); 
      var treeview = $("#TreeView").data("tTreeView"); 
      treeview.bindTo(data); 
     } 
    }); 
} 

它不工作,警報顯示對象,對象;樹形視圖是空白 任何想法,爲什麼感謝提前

回答

1

其實您發送的屬性應該被稱爲ValueText而不是valuetext。這裏有一個適合我的例子。

控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult LoadTree() 
    { 
     var jn = new[] 
     { 
      new { Value = "1", Text = "Item 1" }, 
      new { Value = "2", Text = "Item 2" }, 
      new { Value = "3", Text = "Item 3" }, 
     }; 
     return Json(jn, JsonRequestBehavior.AllowGet); 
    } 
} 

視圖(~/Views/Home/Index.cshtml):

<script type="text/javascript"> 
    function onDataBinding(e) { 
     var url = '@Url.Action("LoadTree")'; 
     var result; 
     $.ajax({ 
      url: url, 
      data: { }, 
      success: function (data) { 
       var treeview = $("#TreeView").data("tTreeView"); 
       treeview.bindTo(data); 
      } 
     }); 
    }  
</script> 

@(Html 
    .Telerik() 
    .TreeView() 
    .Name("TreeView") 
    .ClientEvents(events => 
    { 
     events.OnDataBinding("onDataBinding"); 
    }) 
) 
+0

謝謝Darin的幫助。 – hncl

0

也許你應該叫樹狀!?。直接在$ .post的回調方法中綁定到。我想用當前的代碼,你可以在回調中確保jn ==內容之前,將treeview綁定到jsonObject == jn。如果你提醒你增加一個很大的延遲,並且它給AJAX發佈足夠的時間來完成並運行回調。

+0

謝謝,這個問題是我看到的JSON數據時我在控制器調試程序,但是當我在有警報查看它是空的! – hncl