【问题标题】:Display properties of child object in Datagridview在 Datagridview 中显示子对象的属性
【发布时间】:2010-12-20 20:04:18
【问题描述】:

如何在 datagridview 中显示对象的选定属性,以及第一个对象的成员对象的选定属性?我认为我不需要绑定而是依赖硬编码更新,因为更新将在非 UI 线程上启动,我认为绑定不会那么容易。至少我在其他项目中遇到过问题。

基本上,我希望了解我可以通过哪些不同的方式来做到这一点。也许使用 LINQ,或者任何最合适的。注意:我想在同一个表中显示数据。因为孩子/父母是1:1的关系。

所以示例代码:

Public Class User
public property Score as Integer
public property Details as UserDetails
End Class

Public Class UserDetails
public property Name as String
public property userName as String
End Class

因此,我希望表格显示列:分数、名称、用户名


编辑: 哦,这比我想象的要容易,看来这会奏效:

Dim q = (From n in userList Select New With {n.Score, n.Details.Name, n.Details.userName}).ToArray

【问题讨论】:

    标签: linq datagridview datatable


    【解决方案1】:

    如果你使用 ITypedList 接口来公开你想要的属性,你可以在这里使用数据绑定。

    ITypedList 非常强大,但有点难以理解,IME。我找到的最好的教程是Tips for binding grids to hierarchical data using the ITypedList interface

    【讨论】:

    • 谢谢!乍一看,似乎要添加很多代码来显示子属性。但我知道这是出于绑定目的。我之前遇到的绑定问题是当鼠标悬停在该行上并且它是最后一行时删除行。然后 datagridview 抛出异常。也许我会重新审视你的例子,但最初我希望有一些非常基本的 LINQ 查询,或者其他非常直接的方式。干杯!
    • 我正要发布类似的东西。这确实是一种更简单的方法。您可以将网格的 DataSource 属性设置为“q”,然后就完成了(至少,我知道这适用于 ToList() - 不确定 ToArray())。此外,如果您回答自己的问题,而不是编辑问题,其他人可以对其进行投票,从而提高您的代表分数。
    【解决方案2】:

    作为记录,这看起来像是合适的解决方案:

    Dim q = (From n in userList Select New With {n.Score, n.Details.Name, n.Details.userName}).ToArray
    

    【讨论】:

      猜你喜欢
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      相关资源
      最近更新 更多