你有一个伪表类和一个伪行类。该行有点通用,没有强类型的字段。它遵循典型的字典界面将字典绑定到WinForms网格(或组合)?
Dim age As Object = person("Age") 'accessed via default property Item
VS
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
这个问题,如问,得到的回答。因为我没有得到我的问题的根源,我reframed it。
你正在使用哪个VB版本? –