DataGridView и DataSource: любой способ легко отобразить поля, связанные внешними ключами? - PullRequest
1 голос
/ 08 мая 2009

У меня есть трехуровневое приложение БД Windows Forms в VB.NET. Я использую VS 2005.

Я хотел бы отобразить записи в таблице в DataGridView. Я уже могу отображать записи как есть, привязав DataSource к бизнес-классу, который взаимодействует с классом DB:

Dim assetList as List(Of Asset)
assetList = DB_Asset.GetAssetListOrderByID_Asset 
AssetDataGridView.DataSource = assetList

«Актив» - это мой бизнес-класс, а «DB_Asset» - мой класс БД, который запрашивает у БД возвращение assetList.

Теперь у Asset есть члены вроде этого:

Private m_ID_Asset As Integer
Private m_CategoryID As Integer
Private m_CustodianID As Integer
Private m_ManufacturerID As Integer
Private m_SignedOutToID As Integer
Private m_DefaultLocationID As Integer
Private m_CurrentLocationID As Integer
Private m_DateAcquired As Date
Private m_DateEntered As Date
Private m_EnteredByID As Integer

m _ ID _ Актив содержит первичный ключ таблицы активов в БД, а все остальное в форме m_XXXXXXXXXID содержит внешний ключ для другой таблицы в БД.

Так что в основном я получаю строки с целым рядом чисел. Это именно то, что в таблице активов:

ID_Asset  CategoryID  CustodianID  ManufacturerID  SignedOutToID
   1           17          23            14              5

Я хотел бы знать, есть ли простой способ отобразить текстовые поля, с которыми я связался, со всеми этими внешними ключами:

ID_Asset  CategoryName  CustodianName  Manufacturer  SignedOutTo
   1       Soda - Diet      John       Coca-Cola        Fred

У кого-нибудь здесь есть какие-то хитрости?

Заранее спасибо!

1 Ответ

2 голосов
/ 08 мая 2009

Если у вас есть List (Of Asset), то вы просто изменяете свой запрос DB_Asset.GetAssetListOrderByID_Asset, чтобы вы выполняли там необходимые объединения и присваивали значения этого свойства в assetList.

Вы хотели бы добавить что-то вроде m_CustomerName As String в свой класс активов вместе со всем, что вы будете извлекать, чтобы у вас было место для размещения данных.

Если вы не можете изменить свой класс активов, вы, вероятно, захотите обернуть вокруг него что-то, что получит все эти строки перед тем, как связываться.

...