在DataGridView中显示关系的属性

时间:2009-08-27 06:57:42

标签: c# winforms linq datagridview

我想在DataGridView中显示关系的属性。我使用LINQ to SQL进行映射并具有以下类:

class Computer
{
    public string Name;
    public User User;
}

class User
{
    public string Name;
}

我使用DataGridView显示Computer实体的某些行,并且还希望有一列显示与此计算机关联的用户的名称。

我已经创建了Computer类的对象数据源。我已将BindingSource的DataSource属性设置为此数据源,并将我的DataGridView与此BindingSource相关联。我已经在我的DataGridView中添加了一个列,并将DataPropertyName属性设置为//User.Name//,但这不起作用。有什么好办法呢?

我已经考虑过创建一个继承自Computer的附加类,并且有一个额外的字符串属性,表示用户的名字;但我想避免这种解决方案。

1 个答案:

答案 0 :(得分:2)

var computerUsers = from c in mydataContext.Computer
select new {
 computerName = c.Name,
 userName = c.User.Name
};

myDataGridView.datasource = computerUsers;
myDataGridView.dataBind();

并在您的datagridview中调用“computerName”和“userName”

<asp:BoundField DataField="computerName" HeaderText="Computer" />
<asp:BoundField DataField="userName" HeaderText="User" />