VB.NET中的DataBinding到List(Of CustomObject)

时间:2015-03-24 22:56:17

标签: vb.net data-binding

我使用Text这样简单地绑定了TextBox DataTable Dim dtbData As New DataTable ' populate table Me.BindingSource.DataSource = dtbData txtBox.DataBindings.Clear() txtBox.DataBindings.Add(New Binding("Text", Me.BindingSource, "OrderNumber", True)) BindingNavigator1.BindingSource = Me.BindingSource 属性,如下所示:

List(Of CustomObject)

但是,我正在尝试将其更改为使用dtbData。我只是使用List填充DataSource并将List设置为DataTable。我设置了一个断点,ListBinding都已填充。如果我注释掉将txtBox添加到BindingNavigator的行,那么Dim lstData As New List(Of CustomObject) Dim dtbData As New DataTable ' populate table For Each row As DataRow In dtbData.Rows Dim obj As New CustomObject obj.OrderNumber = CInt(row("OrderNumber")) lstData.Add(obj) Next Me.BindingSource.DataSource = lstData txtBox.DataBindings.Clear() txtBox.DataBindings.Add(New Binding("Text", Me.BindingSource, "OrderNumber", True)) BindingNavigator1.BindingSource = Me.BindingSource 会按预期工作,但如果我不管它,则绑定不起作用。

以下是我尝试的内容:

DataTable

它似乎应该是一样的。 BindingSource不是List(Of CustomObject),而是Me.BindingSource.Current,所以我不确定是否必须采取不同的做法。绑定的属性名称仍然相同。我还在Binding中尝试了CustomObject,但这也无效。谁能告诉我我做错了什么?

Public Class CustomObject Public OrderNumber As Integer End Class 看起来像这样:

Try

修改

我在绑定周围添加了Catch / OrderNumber块,我看到以下错误消息:

无法绑定到DataSource上的属性或列OrderNumber。参数名称:dataMember

我只是看不到绑定到DataTable的{​​{1}}列或OrderNumber的{​​{1}}属性之间的区别。

1 个答案:

答案 0 :(得分:0)

我意识到问题所在。 OrderNumber未定义为Property的{​​{1}}。我把定义改为:

CustomObject

现在它允许我将Public Class CustomObject Public Property OrderNumber As Integer End Class 的{​​{1}}属性绑定到Text的{​​{1}}属性。