2013-04-29 112 views
0

嗨我试图将Kendo UI树视图绑定到ASP.NET MVC 4控制器。我试图用TreeViews关于远程数据的Kendo UI演示中的信息。据我所知,被返回的JSON似乎是正确的,那么数据数组周围的封装对象会出现问题吗?Kendo UI TreeView不显示远程数据

查看代码

<div class="treeview-back" style="padding: 10px"> 
<h3>Groups</h3> 
@(Html.Kendo().TreeView() 
    .Name("treeviewGroup") 
    .DataTextField("Name") 
    .DataSource(dataSource => dataSource 
     .Read(read => read 
      .Action("GroupsRead", "Group") 
     ) 
    ) 
) 
</div> 

控制器

public class GroupController : Controller 
{ 
    private IUserService _userService; 

    public GroupController(IUserService userService) 
    { 
     _userService = userService; 
    } 
    // 
    // GET: /GroupManage/ 

    public ActionResult ManageGroup() 
    { 
     return View(); 
    } 

    public ActionResult GroupsRead([DataSourceRequest]DataSourceRequest request) 
    { 
     var groups = _userService.GetAllGroups(); 

     List<GroupTreeViewModel> treeViewGroups = new List<GroupTreeViewModel>(); 
     foreach (var group in groups) 
     { 
      treeViewGroups.Add(new GroupTreeViewModel() 
       { 
        id = group.Id, 
        Description = group.Description, 
        Name = "Test Node", 
        text = "Body of test node", 
        hasChildren = false, 
        ParentId = null 

       } 
      ); 
     } 
     return Json(treeViewGroups.ToDataSourceResult(request),JsonRequestBehavior.AllowGet); 
    } 
} 

**返回的JSON

{"Data":[{"Name":"Test Node","Description":"Full","text":"Body of test node","id":1,"hasChildren":false,"ParentId":null},{"Name":"Test Node","Description":"Platform 1","text":"Body of test node","id":2,"hasChildren":false,"ParentId":null}],"Total":2,"AggregateResults":null,"Errors":null} 

更新

我解决了这个问题。返回的json数据按照树视图预期的方式进行了不同的布局。 treeview期望一个节点数组,而不是我发送包装在另一个对象中的数组。 http://demos.kendoui.com/web/treeview/remote-data.html

我通过去除()调用.ToDataSourceRequest

return Json(treeViewGroups,JsonRequestBehavior.AllowGet); 
+0

需要更多的信息 - 具体地说,你在看什么和你在期待什么?你在网页中发生错误吗?它显示了什么,或什么都没有?要么 ??? – 2013-04-29 15:45:31

+0

我期待在根级别有两个项目的树视图,在这一点上,我什么也没有看到。 – 2013-04-29 15:59:26

回答

0

我建议检查的远程绑定演示固定这一点。检查ASP.NET MVC选项卡 - 控制器和cshtml。

的一个问题,我看到的是使用DataSourceRequest - TreeView中不使用它。

+0

你能否使用DataSourceRequest澄清你的意思是不是树视图?我已经在使用kendoui演示,我在原始问题中链接到该页面。就控制器和视图而言,我无法真正看到与演示不同的地方。 – 2013-04-30 07:50:46

+0

链接演示的控制器不使用DataSourceRequest类。你检查了吗? – 2013-04-30 08:28:10

0

您创造了从JSON方法的视图(GroupsRead())。相反,您必须创建除JSON方法以外的视图表单。 例如:

**//Create a view from ManageGroup() and call the Json** 
// Below Razor code created in ManaeGroup() 
<div class="treeview-back" style="padding: 10px"> 
<h3>Groups</h3> 
@(Html.Kendo().TreeView() 
    .Name("treeviewGroup") 
    .DataTextField("Name") 
    .DataSource(dataSource => dataSource 
     .Read(read => read 
      .Action("GroupsRead", "Group") 
     ) 
    ) 
) 
</div>