2010-10-13 152 views
3

我有喜歡如何將數據添加到DataGridView的

X={ID="1", Name="XX", 
    ID="2", Name="YY" }; 

一個結構是如何將這些數據轉儲到兩個DataGridView一列

在GridView就像

ID | Name

我們可以使用LINQ來做到這一點。我是新來DataGridView Pleaese幫我做這個..提前

+2

webforms?的WinForms? WPF? Silverlight的? – 2010-10-13 11:27:19

回答

15

感謝您首先需要2列添加到數據網格。你可以在設計時做到這一點。請參閱Columns屬性。 然後根據需要添加行數。

this.dataGridView1.Rows.Add("1", "XX"); 
+0

我在設計時添加了兩列。現在我需要顯示的數據在'網格視圖' – 2010-10-13 11:31:51

+0

謝謝...我需要遍歷結構。所以我必須使用'for'或'foreach'循環。我們可以用'LAMBDA'表達這個嗎? – 2010-10-13 11:38:35

+0

是的。有很多選擇。我想你可以使用數據綁定作爲最好的 – Arseny 2010-10-13 12:38:15

0

LINQ是「查詢」語言(那的Q),因此修改數據是它的範圍之外。

也就是說,你的DataGridView大概是綁定到ItemsSource,也許類型ObservableCollection<T>或類似。在這種情況下,只需執行如X.ToList().ForEach(yourGridSource.Add)(這可能需要根據網格中源的類型進行調整)。

0

您務必做好像這種形式的代碼

DataGridView.DataSource = yourlist;

DataGridView.DataBind();

2

我最喜歡的方式做,這是所謂的「地圖」的擴展功能:

public static void Map<T>(this IEnumerable<T> source, Action<T> func) 
{ 
    foreach (T i in source) 
     func(i); 
} 

然後你就可以添加像這樣的所有行:

X.Map(item => this.dataGridView1.Rows.Add(item.ID, item.Name)); 
3

讓我們假設你有一個類像這樣:

public class Staff 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

而且假設你已經拖放一個DataGridView到您的表單,並將其命名爲數據GridView1。

您需要一個BindingSource來保存您的數據以綁定您的DataGridView。這是你如何做到的:

private void frmDGV_Load(object sender, EventArgs e) 
{ 
    //dummy data 
    List<Staff> lstStaff = new List<Staff>(); 
    lstStaff.Add(new Staff() 
    { 
     ID = 1, 
     Name = "XX" 
    }); 
    lstStaff.Add(new Staff() 
    { 
     ID = 2, 
     Name = "YY" 
    }); 

    //use binding source to hold dummy data 
    BindingSource binding = new BindingSource(); 
    binding.DataSource = lstStaff; 

    //bind datagridview to binding source 
    dataGridView1.DataSource = binding; 
} 
+0

你不需要一個綁定源。您可以直接將列表分配給網格數據源。 – 2010-10-17 07:19:46

+0

是的,我們不需要綁定源,我們可以直接將列表綁定到網格的數據源。使用綁定源的優點是,如果列表已更改/更新,我們可以稍後刷新綁定源。網格也會得到刷新。 – bla 2010-10-17 07:37:54

相關問題