【问题标题】:(VB.Net) BaseClass properties aren't displayed in DataGridView when data-binding(VB.Net) 数据绑定时,DataGridView 中不显示 BaseClass 属性
【发布时间】:2021-03-04 01:18:39
【问题描述】:

我正在尝试将 DataGridView 绑定到 DerivedClass 对象列表。问题是当我通过DataGridView.DataSource = New BindingList(Of DerivedClass)(myList) 这样做时,DataGridView 中只显示 DerivedClass 属性 (Graf)。我需要显示所有属性(NameDetailsDay)。有一个简单的解决方案吗? 非常感谢您的意见。

基类:

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


【解决方案1】:

按照 Jimi 在 cmets 中的建议,我将列表类型从 ISample 更改为 Sample,解决了问题。

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2011-01-27
    相关资源
    最近更新 更多