【发布时间】:2021-03-04 01:18:39
【问题描述】:
我正在尝试将 DataGridView 绑定到 DerivedClass 对象列表。问题是当我通过DataGridView.DataSource = New BindingList(Of DerivedClass)(myList) 这样做时,DataGridView 中只显示 DerivedClass 属性 (Graf)。我需要显示所有属性(Name、Details、Day)。有一个简单的解决方案吗?
非常感谢您的意见。
基类:
Public MustInherit Class BaseClass
Public Property Name As String
Public Property Details As String
Public Property Day As DateTime
End Class
派生类:
Public Class DerivedClass
Inherits BaseClass
Public Property Graf As Graf
End Class
主要方法:
Module MainModule
Public myList As List(Of DerivedClass) = ...
Sub Main()
DataGridView1.DataSource = New BindingList(Of DerivedClass)(myList)
End Sub
End Module
编辑: 事实上,上面的代码被大大简化了。在这里,我提供了有关实现的更多详细信息,因为它似乎是问题的根源。
接口 1
Public Interface IBaseInterface
Property Name As String
Property Detials As String
Property Day As DateTime
End Interface
接口 2
Public Interface ISample
Inherits IBaseInterface
Property Graf As Graf
End Interface
实现 IBaseInterface 的抽象类
Public MustInherit Class BaseClass
Implements IBaseInterface
Public Property Name As String Implements IBaseInterface.Name
Public Property Details As String Implements IBaseInterface.Detials
Public Property Day As DateTime Implements IBaseInterface.Day
End Class
实现ISample并从BaseClass继承的具体类
Public Class Sample
Inherits BaseClass
Implements ISample
Public Property Graf As Graf Implements ISample.Graf
End Class
主要方法
Module MainModule
Public myList As List(Of ISample)
Sub Main()
DataGridView1.DataSource = New BindingList(myList)
End Sub
End Module
【问题讨论】:
-
你试过另一种方式
New BindingList(Of BaseClass)(myList)吗? -
@AlexB。我有。它抛出一个 InvalidCastException 异常。
-
当我尝试通过反射迭代 DerivedClass 属性时,发生了同样的问题。只获得了格拉夫。
-
DataGridView 中只显示 DerivedClass 属性 是什么意思?您只看到
Graf属性?这是不可能的。 -
@Jimi 没错。只有一列“Graf”。
标签: .net vb.net data-binding datagridview