在我的表格中,我DataGridView
显示了一堆列。在这个表中,我有一列指向另一个表中的项目。正如您可能已经猜到的那样,我想在一列的网格中显示第二个表中的一些文本值,而不是 ItemID。我在网上找不到正确的例子如何做到这一点。
假设我在数据库中有两个表:
表用户:
UserID UserName UserWorkplaceID
1 Martin 1
2 John 1
3 Susannah 2
4 Jack 3
表工作场所:
WorkplaceID WorkplaceName
1 "Factory"
2 "Grocery"
3 "Airport"
我有一个无类型数据集dsUsers
、一个绑定源bsUsers
和两个DataAdapters
用于填充数据集 ( daUsers
, daWorkplaces
)。
我正在执行的代码:
daUsers.Fill(dsUsers);
daWorkplaces.Fill(dsUsers);
bsUsers.DataSource = dsUsers.Tables[0];
dgvUsers.DataSource = bsUsers;
此时,我在我的dgvUsers
三列中看到了 UserID、UserName 和 UserWorkplaceID。但是,而不是 UserWorkplaceID 和值 1,2,3 我想看到“工厂”,“杂货店”等等......
所以我添加了另一个dgvUsers
名为“WorkplaceName”的列,在我的代码中我试图将它绑定到新创建的关系:
dsUsers.Relations.Add("UsersWorkplaces", dsUsers.Tables[1].Columns["WorkplaceID"], dsUsers.Tables[0].Columns["UserWorkplaceID"]);
WorkplaceName.DataPropertyName = "UsersWorkplaces.WorkplaceName";
不幸的是,这不起作用。创建关系没有错误,但运行程序后此列中的字段为空。
我做错了什么?
我还想询问一个在 DataGridView 中使用 LookUp 组合框的示例,它允许我更改 UserWorkplaceID,但它不会显示数值,而是显示 WorkplaceName 下的 tex 值。
谢谢你的时间。