X={ID="1", Name="XX",
ID="2", Name="YY" };
一個結構是如何將這些數據轉儲到兩個DataGridView
一列
在GridView就像
ID | Name
我們可以使用LINQ來做到這一點。我是新來DataGridView
Pleaese幫我做這個..提前
X={ID="1", Name="XX",
ID="2", Name="YY" };
一個結構是如何將這些數據轉儲到兩個DataGridView
一列
在GridView就像
ID | Name
我們可以使用LINQ來做到這一點。我是新來DataGridView
Pleaese幫我做這個..提前
感謝您首先需要2列添加到數據網格。你可以在設計時做到這一點。請參閱Columns屬性。 然後根據需要添加行數。
this.dataGridView1.Rows.Add("1", "XX");
我在設計時添加了兩列。現在我需要顯示的數據在'網格視圖' – 2010-10-13 11:31:51
謝謝...我需要遍歷結構。所以我必須使用'for'或'foreach'循環。我們可以用'LAMBDA'表達這個嗎? – 2010-10-13 11:38:35
是的。有很多選擇。我想你可以使用數據綁定作爲最好的 – Arseny 2010-10-13 12:38:15
LINQ是「查詢」語言(那的Q),因此修改數據是它的範圍之外。
也就是說,你的DataGridView
大概是綁定到ItemsSource
,也許類型ObservableCollection<T>
或類似。在這種情況下,只需執行如X.ToList().ForEach(yourGridSource.Add)
(這可能需要根據網格中源的類型進行調整)。
您務必做好像這種形式的代碼
DataGridView.DataSource = yourlist;
DataGridView.DataBind();
我最喜歡的方式做,這是所謂的「地圖」的擴展功能:
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));
讓我們假設你有一個類像這樣:
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;
}
你不需要一個綁定源。您可以直接將列表分配給網格數據源。 – 2010-10-17 07:19:46
是的,我們不需要綁定源,我們可以直接將列表綁定到網格的數據源。使用綁定源的優點是,如果列表已更改/更新,我們可以稍後刷新綁定源。網格也會得到刷新。 – bla 2010-10-17 07:37:54
webforms?的WinForms? WPF? Silverlight的? – 2010-10-13 11:27:19