2013-03-18 98 views
1

我有“人”对象的列表:填充一个DataGridView

public class Person 
{ 
    public Int32 Id { get; set; } 
    public String Name { get; set; } 
    public Document oDocument { get; set; } 
} 

而且也有文档类。

public class Document 
{ 
    public String Type { get; set; } 
    public String Code { get; set; } 
} 

我需要填充展示有的只是两列列表中的DataGridView:名称(个人)和DocumentCode(文件)

我用这个代码,但我没有得到我想要的东西。

dgvPersona.DataSource = list; 
+0

添加结果 – KF2 2013-03-18 05:50:01

回答

2

您需要选择一个anonymous type对象(项目必填字段),然后绑定,为你的GridView这样的:

var list = (from p in persons 
      select new 
        { 
        Name = p.Name, 
        DocumentCode = p.Document.Code 
        }).ToList(); 

dgvPersona.DataSource = list; 

您可以选择Id以及并保持在一个在你的GridView隐藏列,这样以后就可以用它来记录更新等

+0

感谢您的重播。以及如果想要修改列名称。 – Flezcano 2013-03-18 06:01:31

+1

@Flezcano,既然你投射到一个匿名类型中,你也可以修改select语句中的列名,或者你可以简单地修改Grid Column标题并在设计或运行时为它指定一个新名字*(在你的代码中) * like'grid.Columns [0] .HeaderText =“Some Name”;' – Habib 2013-03-18 06:03:07

1

试试这个:

public class Person 
     { 
      public Int32 Id { get; set; } 
      public String Name { get; set; } 
      public Document oDocument { get; set; } 
     } 
     public class Document 
     { 
      public String Type { get; set; } 
      public String Code { get; set; } 
     } 

    List<Person> list = new List<Person>(); 
    dgvPersona.DataSource= list.Select(data => new { data.Name, data.oDocument.Code }).ToList();