2009-08-27 74 views
0

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

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的额外类,它有一个额外的字符串属性,它代表了用户的名字;但我想避免这个解决方案。

回答

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

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

,并在您的datagridview通话“计算机”和“username”的

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

我已经想过用匿名类的解决方案,但我想如果可能使用GUI设计。 – 2009-08-27 07:25:50

+0

好的。你可以发布你的数据网格和对象源代码吗? – krishna 2009-08-27 07:31:02

+0

你想要什么代码?我使用GUI设计器来定位我的控件,是否要设计器生成的代码? – 2009-08-27 09:05:44