Как указал @jmcilhinney, в нем нет магии, и datagridview
нужно знать, как должно отображаться ItemCategory
.
Один из вариантов - создать класс "viewmodel", который предоставит свойства для DataGridView
.
Классы, заполненные из базы данных:
(Вам не нужно повторять имя класса в каждом свойстве иСвойства будут легко читаться без префиксов имени класса)
Public Class Item
Public Property ID As Integer
Public Property Name As String
Public Property Category As ItemCategory
End class
Public Class ItemCategory
Public Property ID As Integer
Public Property Name As String
End Class
Затем создайте класс viewmodel, который будет представлять все свойства, необходимые для DatagridView
Public Class ItemViewModel
Private ReadOnly _item As Item
Public Property Id As String
Get
Return _item.ID
End Get
End Property
' Add setter if you want edit values through DataGridView
Public Property Name As String
Get
Return _item.Name
End Get
End Property
Public Property CategoryId As String
Get
Return _item.Category.ID
End Get
End Property
Public Property CategoryName As String
Get
Return _item.Category.Name
End Get
End Property
Public Sub New(item As Item)
_item = item
End Sub
End class
Затем вы можете связать viewmodel с DataGridView
Dim items As List(Of Item) = LoadFromDatabase()
Dim viewmodels = items.Select(Function(item) new ItemViewModel(item)).ToList()
myDataGridView.DataSource = viewmodels