2012-12-12 63 views
0

我正在使用MVC4和C#。 我有一个KendoUI Treeview,我想用RavenDB中的数据填充它。使用RavenDB文档填充KendoUi Treeview

在演示中使用此:

public JsonResult Employees(int? id) 
    { 
     var dataContext = new NorthwindDataContext(); 

     var employees = from e in dataContext.Employees 
         where (id.HasValue ? e.ReportsTo == id : e.ReportsTo == null) 
         select new { 
          id = e.EmployeeID, 
          Name = e.FirstName + " " + e.LastName, 
          hasChildren = e.Employees.Any() 
         }; 

     return Json(employees, JsonRequestBehavior.AllowGet); 
} 

通知参数 “ID” - 这是一个int。在RavenDb中,文档ID是字符串,例如。 myDco/231 ...

想象这是一个标准的文件:

{ 
    "CreationDate": "12/12/2012 8:07:59 PM", 
    "Name": "jkljklk", 
    "Type": "kljkljkljkljkl", 
    "Description": "ljkljklj", 
    "CreatedByUser": "ljklklkljklj", 
    "Deleted": false, 
    "Status": "NEW", 
    "Parent": "product/546" 
} 

我将如何填充树视图?

+0

请说明一下,你是否正在寻找关于传递int而不是字符串的指导?你打算传递一个字符串吗?或者你只是想让某人将该实体框架查询翻译成Raven?如果是后者,请先尝试一下,然后发布不适用于特定问题的内容。 –

回答

1

我想通了。

我改变了我的RavenDB文件包含所有的儿童名单:

{ 
    "CreationDate": "12/12/2012 9:33:34 PM", 
    "Name": "hohoho", 
    "Type": "hohohoh", 
    "Description": "hohohoh", 
    "CreatedByUser": "hohohoh", 
    "Deleted": false, 
    "Status": "NEW", 
    "Parent": "ohohohoh", 
    "Children": [ 
    "item/1", 
    "item/2", 
    "item/3" 
    ] 
} 

我再通过控制器返回我的项目列表的视图,然后通过他们迭代,所有的孩子追加到其正确的父节点:

@(Html.Kendo().TreeView().Name("TreeView").DragAndDrop(true) 
.Items(treeview => 
      { 
       foreach (var myItem in Model) 
       { 
        var myItemName = myItem.Name; 
        var children = myItem.Children; 
        treeview.Add().Text(myItemName).Expanded(false).Items(branch => 
                      { 
                        if (children != null) 
                        { 
                         foreach (var child in children) 
                         { 
                          branch.Add().Text(child); 
                         } 
                        } 
                      }); 
       } 
      } 
    )) 

无论如何,感谢您的答复:)

希望这有助于别人一天。

1

不应该有任何问题使用字符串,而不是那个int。您只需根据传递给Action方法的字符串参数来获取所需的记录。