使用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);
  }

使用MVC 3.0在Telerik Treeview中嵌套子视图

看起来问题是数据类型混淆。

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对象。