如何使用LINQ在GridView中显示子对象属性

时间:2011-08-15 11:04:19

标签: c# linq datagridview

我正在使用LINQ来查询具有另一个表的外键的表,我已经运行了SQLMetal并为表生成了类(因为我使用的是SQL Compact Edition,我没有太多选择)而且我是手动为我的网格视图创建列。

我为每个列设置了DataPropertyNames,它们适用于父对象的Properties,但是我想用一个外表(在这种情况下称为'的表)填充一个列。问题'),我已经尝试将DataPropertyName设置为'issues.Title'但是这没有任何效果,并且列保持为空。

如果我循环查询结果并打印'issues.Title'的值,则它们存在,但它们仍未显示在列中。 DataPropertyName不支持这样的子对象,还是由于LINQ?我已经尝试设置我的查询以对外键使用连接,但我有相同的结果。

修改 我知道有一个'toString'解决方法涉及覆盖嵌套对象上的方法以返回值,但是这不适用于此,因为我想访问多个属性。

经过一些搜索它的父级,DataGridView根本不支持它,所以我正在寻找任何其他方式来访问嵌套对象的属性以便在网格中使用。

1 个答案:

答案 0 :(得分:1)

看起来您必须在父对象中创建委托属性,如:

public string IssueTitle
{
    get { return issues.Title; }
}

有些人甚至认为这是面向对象编程方面唯一合适的方法,因为它封装了父对象中的子对象或引用对象。事实上,您可以让父对象自己决定要呈现的内容,例如,没有问题对象。

修改 您也可以考虑使用视图模型。