使用MVC 3.0在Telerik Treeview中嵌套子视图
本文关键字:嵌套 视图 Treeview Telerik MVC 使用 | 更新日期: 2023-09-27 18:03:49
我有一个相当简单的数据模型,有三个表。合同、会员、剧集。我试图建立一个teleerik treeview来显示三个表中的每个条目,以及它们在树层中的关系……
- 有多个合同。
- 每个合同有多个成员。
- 每个成员都有多个情节。
值得注意的是,teleerik演示只显示了child的一个部分。Telerik的在线演示
此外,他们的拖放演示使用相同的表,并简单地使用GetRootEmployee函数进行填充。所以我找不到任何相关的例子。
例子:
Contract 1's decription
Member of Contract 1's name
Episodeid of Member in Contract 1
Another Member of Contract 1...
Episodeid of another Member.
Contract 2's description
问题是,我根本无法让剧集(第三层)成功填充,尽管前两层运行良好。我将发布视图和控制器
<<h2>视图/h2> @(
Html.Telerik().TreeView()
.Name("myTree")
.BindTo(Model, mappings =>
{
mappings.For<SMTXEFMVCModel.Contract>(binding => binding
.ItemDataBound((item, contract) =>
{
item.Text = contract.Description;
})
.Children(contract => contract.Members));
mappings.For<SMTXEFMVCModel.Member>(binding => binding
.ItemDataBound((item, member) =>
{
item.Text = member.FirstName + " " + member.LastName;
}) //If I stop here, it populates Contract and Members correctly.
.Children(member => member.Episodes));
mappings.For<SMTXEFMVCModel.Episode>(binding => binding
.ItemDataBound((item, episode) =>
{
item.Text = episode.episodeID;
}));
})
)
h2控制器 public ActionResult TreeView()
{
var ctx = new SMTXContext();
var Contracts = ctx.Contracts.ToList();
return View(Contracts);
}
public ActionResult TreeView()
{
var ctx = new SMTXContext();
var Contracts = ctx.Contracts.ToList();
return View(Contracts);
}
看起来问题是数据类型混淆。
item.Text = episode.episodeID;
应该是
item.Text = episode.episodeID.ToString();
那么它可以完美地工作
您的第三个映射似乎有问题
mappings.For<SMTXEFMVCModel.Member>(binding => binding
.ItemDataBound((item, episode) =>
{
item.Text = episode.episodeID;
}));
不应该为Episode而不是Member定义映射吗?此外,也不需要
var Members = ctx.Members.ToList();
var Assessments = ctx.Assessments.ToList();
当您不以任何可能的方式(如
)将这些值传递给视图时return View(Contracts);
Treeview将通过Contract和Member对象的导航属性自动遍历Members和Episodes对象。