У вас есть класс псевдостолов и класс псевдорядов.Строка является несколько общей и не имеет строго типизированных полей.Он соответствует типичному словарному интерфейсу
Dim age As Object = person("Age") 'accessed via default property Item
против
Dim age As Integer = person.Age 'an actual property typed as an Integer
Какой шаблон использовать, чтобы мы могли связать нашу псевдотаблица и ее строки с сеткой или комбинированным полем?
Dim rs As New clsResultSet(tblPeople)
Dim id As Object = rs(0)("Id") '913
Dim name As Object = rs(0)("Name") 'Ted
Dim age As Object = rs(0)("Age") '43
Dim occupation As Object = rs(0)("Occupation") 'cab driver
grd.DataSource = rs 'In grid I expect to see Name, Age, Occupation columns
cbo.DataSource = rs
cbo.DisplayMember = "Name" 'could we do this?
cbo.ValueMember = "Id" '...and this?
Я прочитал все о IList, IBindingList, BindingSource и т. Д., Попробовал кое-что, и я все еще ломаю голову над тем, как сделать это правильно.В большинстве примеров, которые я нашел, ожидается, что ваши объекты записей будут строго типизированы (например, person.Age, а не person ("Age")).
Вот несколько простых классов, с которых можно начать:
Public Class clsResultSet 'Like a DataTable
Inherits List(Of clsRecord)
Private mdicFields As New Dictionary(Of String, Object)
Public Sub New(vdt As DataTable) 'Loaded from table
For Each bdc As DataColumn In vdt.Columns
Me.mdicFields.Add(bdc.ColumnName, bdc)
Next
For Each vdr As DataRow In vdt.Rows
Me.Add(New clsRecord(vdr, Me))
Next
End Sub
Public ReadOnly Property Fields As Dictionary(Of String, Object)
Get
Return Me.mdicFields
End Get
End Property
End Class
Public Class clsRecord 'Like a DataRow
Inherits Dictionary(Of String, Object)
Private mrs As clsResultSet
Protected Friend Sub New(vdr As DataRow, vrs As clsResultSet)
Me.mrs = vrs
For Each bPair As KeyValuePair(Of String, Object) In vrs.Fields
Me.Add(bPair.Key, vdr(bPair.Key))
Next
End Sub
End Class
На этот вопрос, как его спросили, был дан ответ.Я перефразировал его , так как я не дошел до корня своей проблемы.