我正在使用MVC4和C#。 我有一个KendoUI Treeview,我想用RavenDB中的数据填充它。
在演示中,他们使用了这个:
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 :(得分:1)
使用string代替那个int应该没有任何问题。您只需要根据传递给Action方法的字符串参数来获取所需的记录。
答案 1 :(得分: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"
]
}
然后我通过控制器将我的项目列表返回给View,然后遍历它们,将所有子项追加到正确的父节点:
@(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);
}
}
});
}
}
))
无论如何,感谢回复:)
希望有一天能帮到别人。