2013-03-18 100 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();