В моем 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";
К сожалению, это не работает. Связь создается без ошибок, но поля в этом столбце остаются пустыми после запуска программы.
Что я делаю не так?
Я также хотел бы спросить о примере с комбинированным списком LookUp в DataGridView, который позволяет мне изменять UserWorkplaceID, но вместо числового значения будет отображаться значение tex, которое находится под WorkplaceName.
Спасибо за ваше время.