0

在过去的两个小时里,我查看了您的问题以及互联网上的其他地方,但在任何地方都找不到解决我的问题的方法,或者至少我不明白如果我这样做了。如果这显得多余或空洞,我提前道歉。让我说清楚:问题是我以某种方式没有正确实施该方法,但我理解(或认为我这样做)它应该如何完成。

我在表单上有一个网格视图,我想在其中显示代表约会的自定义对象。我想绑定到我的约会对象而不是数据表(这是成功的)。但是,下面的方法不会在网格中显示我的约会对象,尽管它看起来是正确的。此外,直接将对象添加到 bindingsource 的内部列表也无法在网格中显示它们,直接将 gridview 的数据源设置为 bindinglist 也是如此。我不知道我做错了什么!请帮忙,这似乎根本没有意义,让我发疯。

Public Sub DisplayItems()  

                    Dim bindingsource As BindingSource
                    Dim appointment As ClsAppointment
                    Dim appointments As System.ComponentModel.BindingList(Of ClsAppointment)
                    Dim iterator As IEnumerator

                    appointments = New System.ComponentModel.BindingList(Of ClsAppointment)
                    bindingsource = New BindingSource

                    iterator = Items
                    While iterator.MoveNext '
                            appointment = iterator.Current
                            appointments.Add(appointment)

                    End While

                    bindingsource.DataSource = appointments
                    gridview.DataSource = bindingsource

                    Debug.Print("")
                    Debug.Print("DisplayItems()...")
                    Debug.Print("GridView has " & gridview.Rows.Count & " rows")


     End Sub


Public Class ClsAppointment 

    Public FirstName As String
    Public LastName As String
    Public Day As String
    Public [Date] As Date
    Public Time As Date
    Public Address As String
    Public City As String
    Public State As String
    Public Zip As String
    Public Description As String

End Class

==================================================== =======================================

注意:DisplayItems() 是适配器 (ItemEditor) 的一种方法,为简单起见,我选择不显示。另一种方法 (Items) 通过枚举器返回适配器的项目集合(约会)。我已经对此进行了测试,并且知道枚举器正在返回项目,所以问题不是这个。

4

2 回答 2

3

您不能绑定到对象的公共字段。正如微软所说,“您可以绑定到任何公共语言运行时 (CLR) 对象的公共属性、子属性以及索引器。” Msdn-绑定源概述。将您的课程更改ClsAppointment为:

Public Class ClsAppointment 

    Property FirstName As String
    Property LastName As String
    Property Day As String
    Property [Date] As Date
    Property Time As Date
    Property Address As String
    Property City As String
    Property State As String
    Property  Zip As String
    Property Description As String

End Class
于 2015-01-05T20:02:12.757 回答
0

请允许我简化您的代码:

Public Sub DisplayItems()  
    gridview.DataSource = Me.Items()

    Debug.Print("")
    Debug.Print("DisplayItems()...")
    Debug.Print("GridView has " & gridview.Rows.Count & " rows")

End Sub

试试这个,让我们知道你遇到了什么错误。我知道你最终可能需要 BindingSource,但现在让我们把它从图片中删除,看看事情是如何工作的。

于 2015-01-04T23:59:10.487 回答