我有两个表,一个是tblKunde
,另一个是tblHistorie
。
它们看起来像这样:
TblKunde :
您可以看到KdNr
是其主键。
TblHistorie :
您可以看到Id
是主键,KdNr
是外键,指向表KdNr
的{{1}}。
现在,我的目标是将表格tblKunde
显示为包含TblHistorie
,Datum
列的KendoUI网格,而不是列Aktion
,它应显示名称{ {1}}。
所以基本上它很简单。网格不应该显示KdNr单元格instad外键表的名称。
这是我的表格的一小部分,显示了KdNr
和tblKund
列:
Datum
这只是一个片段,我标记了应该显示的名称而不是KdNr。有人能说我怎么做吗?
答案 0 :(得分:0)
这是显示由外键连接的s外表的值的解决方案:
这些是更好地说明的表格:
KdNr
是本案例中的外键tblKunde
我们的网格绑定到tblHistorie
所以我们必须使用外键才能显示tblKunde
的名称
首先,你需要像这样查询外表。这是在控制器内部完成的:
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
中,以便稍后在视图中使用。
网格内部:
columns.ForeignKey(p => p.KdNr, (System.Collections.IEnumerable)ViewData["Kunde"], "KdNr", "Name").Title("Name");
与正常列(p => p.KdNr
)绑定到外键。通过columns.ForeignKey
执行此操作非常重要。下一步是使用IEnumerable
查询列表并将其绑定到ViewData。在它后面将你的外键放在引号(我的情况下为KdNr
),然后是你希望它绑定的外表的列(在我的情况下为Name
)。这必须在第一步的ViewData中!