Telerik网格外键

时间:2016-08-28 00:28:18

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

我有两个表,一个是tblKunde,另一个是tblHistorie。 它们看起来像这样:

TblKunde

enter image description here

您可以看到KdNr是其主键。

TblHistorie

enter image description here

您可以看到Id是主键,KdNr是外键,指向表KdNr的{​​{1}}。

现在,我的目标是将表格tblKunde显示为包含TblHistorieDatum列的KendoUI网格,而不是列Aktion,它应显示名称{ {1}}。

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

这是我的表格的一小部分,显示了KdNrtblKund列:

Datum

这只是一个片段,我标记了应该显示的名称而不是KdNr。有人能说我怎么做吗?

1 个答案:

答案 0 :(得分:0)

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

这些是更好地说明的表格

enter image description here

  • 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();
      }
      
    2. 您必须从外表中选择所需的所有属性以及外键。在我的情况下,这是KdNr

现在您已选择了所有属性,请将其放在ViewBagViewData中,以便稍后在视图中使用。

  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中!