我很难理解TreeView
小部件的内部工作原理。我指的是Kendo code library example,特别是Ajax加载代码段:
//Ajax binding data
public JsonResult Employees(string id)
{
XElement element = XElement.Load((Server.MapPath("~/App_Data/employees.xml")));
IEnumerable<Employee> result;
if (!string.IsNullOrEmpty(id))
{
//search for id and return it's children
result = FindByID(id, element.Element("Employee")).Element("items").Elements("Employee").Select(e => ToEmployee(e));
}
else
{
//return first level nodes
result = element.Elements("Employee").Select(e => ToEmployee(e)) ;
}
return Json(result, JsonRequestBehavior.AllowGet);
}
//Find the XML element by Id
private XElement FindByID(string id, XElement element)
{...}
//Convert XML element to Object
private Employee ToEmployee(XElement element)
{
return new Employee()
{
id = int.Parse(element.Element("employeeId").Value),
name = element.Element("name").Value,
hasChildren = element.Element("items") != null
};
}
这是使用的模型,它对应于实际的XML结构:
public class Employee
{
public int id { get; set; }
public string name { get; set; }
public bool hasChildren { get; set; }
public List<Employee> items { get; set; }
}
View执行以下代码:
@(Html.Kendo().TreeView()
.Name("ajaxTree")
.DataTextField("name")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Employees", "Home");
});
})
)
困扰我的是模型需要与此示例完全相同的事实。具体而言,&#34; id&#34;和&#34; hasChildren&#34;需要以这种方式准确指定属性。例如,修改&#34; id&#34;进入&#34; Id&#34;会使此示例无效,TreeView
将无法加载。有人可以帮助我吗?
答案 0 :(得分:0)
不确定你是否得到了问题的答案。
此链接http://demos.kendoui.com/web/treeview/remote-data.html将帮助您了解模型数据如何绑定到树视图。请点击以下链接。
问题#2,#3
是的,可以按如下方式配置模型属性:
schema: {
model: {
id: "EmployeeId",
hasChildren: "HasEmployees",
children: "EmployeeArray"
}
}