【问题标题】:Telerik grid foreign keyTelerik 网格外键
【发布时间】:2016-08-28 00:28:17
【问题描述】:

我有两张桌子,一张是tblKunde,另一张是tblHistorie。 它们看起来像这样:

TblKunde:

你可以看到KdNr是它的主键。

TblHistory:

可以看到Id是主键,KdNr是外键,指向表tblKunde的KdNr。

现在我的目标是将表 TblHistorie 显示为带有列 Datum、Aktion 的 KendoUI 网格,而不是列 KdNr 它应该显示名称 tblKund。

所以基本上它很简单。网格不应显示 KdNr 单元格而不是外键表的名称。

这是我的表格的 sn-p,其中显示列 Datum 和 Aktion:

    .Columns(columns =>
    {
      columns.Bound(c => c.Id).Hidden();
      columns.Bound(c => c.KdNr); // this should be the Name
      columns.Bound(c => c.Datum);
      columns.Bound(c => c.Aktion);
    })

这只是一个 sn-p,我标记了应该显示名称而不是 KdNr 的位置。谁能告诉我该怎么做?

【问题讨论】:

    标签: c# asp.net kendo-ui telerik


    【解决方案1】:

    这里是显示由外键连接的外部表的值的解决方案:

    这些表格可以更好地说明这一点:

    • KdNr 在这种情况下是外键
    • 在我们的网格中,我们希望显示来自tblKunde 的名称
    • 我们的网格绑定到tblHistorie,所以我们必须使用外键来显示tblKunde的名称

      1. 首先你需要像这样通过外部表进行查询。这是在控制器内部完成的:

        public ActionResult ToDo()
        {
            // Connection to database table
            KundeContext KundenContext = new KundeContext();
            // Select all properties from table. Especially the foreign key!!
            ViewData["Kunde"] = KundenContext.Kundes.Select(e => new { KdNr = e.KdNr, Name = e.Name, Vorname = e.Vorname, Berater = e.Berater }).ToList();
            return View();
        }
        

      您必须从外部表以及外键中选择您想要的所有属性。就我而言,这是KdNr。

    现在您已经选择了所有属性,请将其放在您的 ViewBag 或 ViewData 中,以便稍后在视图中使用它。

    1. 网格内:

      columns.ForeignKey(p => p.KdNr, (System.Collections.IEnumerable)ViewData["Kunde"], "KdNr", "Name").Title("Name");
      

      绑定到外键,就像绑定到普通列 (p => p.KdNr)。通过columns.ForeignKey 执行此操作很重要。下一步是使用IEnumerable 查询您的列表并将其绑定到您的ViewData。在它后面将你的外键放在引号中(在我的例子中是KdNr),然后是你希望它绑定的外部表的列(在我的例子中是Name)。从第一步开始,这必须在 ViewData 中!!

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多