【问题标题】:Nested Children in Telerik Treeview with MVC 3.0使用 MVC 3.0 在 Telerik Treeview 中嵌套子级
【发布时间】:2011-07-26 16:08:51
【问题描述】:

我有一个相当简单的数据模型,其中包含三个表。合同、成员、情节。并且正在尝试构建一个 Telerik 树视图,以显示三个表中的每个条目在树的层级中的关系......

  • 有多个合同。
  • 每个合同都有多个成员。
  • 每个成员都有多个情节。

请注意,telerik 演示仅显示一部分儿童。 Telerik's Online Demo

此外,他们的Drag and Drop 演示使用相同的表,并且仅使用 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

问题是我根本无法让剧集(第三层)成功填充,尽管前两个工作正常。我将发布我的视图和控制器。

查看

 @(
    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;
           }));
     })
)

控制器

      public ActionResult TreeView()
  {
      var ctx = new SMTXContext();
      var Contracts = ctx.Contracts.ToList();

      return View(Contracts);
  }

【问题讨论】:

    标签: c# asp.net-mvc treeview razor telerik


    【解决方案1】:

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

    item.Text = episode.episodeID;
    

    应该是

    item.Text = episode.episodeID.ToString();
    

    然后它就可以完美运行了。

    【讨论】:

      【解决方案2】:

      您的第三个映射似乎有问题

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

      【讨论】:

      • 我一定是复制了错误的版本。 (我有 SMTXEFMVCModel.Episode)在我的实时版本中有完全相同的错误。我还打算注释掉控制器中的列表,并将进行适当的编辑谢谢。
      • 您的数据是否包含剧集?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      相关资源
      最近更新 更多