我有DataGridView從數據源(SQL)填充數據。現在我想添加一個新行,但我不能,因爲新的數據不能被添加到DataGridView的有限...如何將新行添加到datagridview?
我想:
dataGridView1.Source = null;
dataGridView1.Rows.Add("1");
,但它會清除我以前表中的數據。如何做到這一點,添加新的行而不刪除以前的數據?
我有DataGridView從數據源(SQL)填充數據。現在我想添加一個新行,但我不能,因爲新的數據不能被添加到DataGridView的有限...如何將新行添加到datagridview?
我想:
dataGridView1.Source = null;
dataGridView1.Rows.Add("1");
,但它會清除我以前表中的數據。如何做到這一點,添加新的行而不刪除以前的數據?
當您設置DataSource
property到null
,你基本上消除從DataGridView
所有數據(因爲它不知道該怎麼綁定了)。
您有兩種選擇。首先是更新底層數據源。我們假設這是一個DataTable
。在這種情況下,你會做這樣的事情:
DataTable dt = dataGridView1.Source as DataTable;
dt.Rows.Add(new object[] { ... });
然後是DataGridView
會挑上的變化(注意,如果你是沒有約束力的東西,沒有實現INotifyCollectionChanged
interface,你將有調用ResetBindings
method以使網格刷新)。
另一個選項是讓DataGridView
管理行。您可以通過手動添加使用由Rows
property返回DataGridViewRowCollection
的Add
method每個項目做到這一點:
foreach (var item in source)
{
dataGridView1.Rows.Add("1", "2", "3", ...);
}
我不會說的第二種解決方案是最佳,但它會奏效。最後,假設你綁定了一個DataTable
(或者來自底層數據源的數據的其他實現),這對於更新底層數據源(這將是一個單獨的問題)沒有任何作用。
簡短的回答是,你沒有。
當您將DataSource
設置爲空時,您已打破DataGridView
與您的數據源之間的鏈接,因此其數據將不會被保留。您不能將行添加到綁定DataGridView
,因爲它應該表示底層DataSource
的狀態;你有效地要求.net讓你的桌子與其支持存儲不同步,首先打破了數據綁定的目的。
如果要將行添加到後備存儲區,則應該在DataSource
中添加一行,而不是在DataGridView
中添加一行。
也許你想手動和詳細地做到這一點?像這樣?
DataSet ds = new DataSet();
OleDbDataAdapter adapter = null;
adapter = new OleDbDataAdapter("SELECT * FROM WHERE", conn);
adapter.Fill(ds);
dataGridView1.ColumnCount = 5; //how many columns returns your SQL query? starts with 0
dataGridView1.Columns[0].Name = "COl-1";
dataGridView1.Columns[1].Name = "COl-2";
dataGridView1.Columns[2].Name = "COl-3";
dataGridView1.Columns[3].Name = "COl-4";
dataGridView1.Columns[4].Name = "COl-5";
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
dataGridView1.Rows.Add(
(dr["COL_HEADER_NAME1"].ToString()),
(dr["COL_HEADER_NAME2"].ToString()),
(dr["COL_HEADER_NAME3"].ToString()),
(dr["COL_HEADER_NAME4"].ToString()),
(dr["COL_HEADER_NAME5"].ToString()));
}
您只需通過添加行收集的方法
me.datagridview1.rows.add("first","second","third");
您可以添加與陣列收集項目的任何數量添加行。
Tnx,你能告訴我如何添加行到我的數據源?我有另一個DataGridView與我想添加到我的第一個GridView的數據.. – Bodi 2012-03-07 21:26:28
如果你的後備存儲是一個SQL表,我想你只需要在該表中插入一個INSERT。 – 2012-03-07 21:29:27
這不是從SQL ..這是我的一些數據生成添加到第一個表並打印它;) – Bodi 2012-03-07 21:44:27