的RowsAdded
事件將不會對這項工作 - 嘗試加入一些調試輸出到您的事件處理程序,你會看到該事件的套發射行,而不是單行,這就是爲什麼你只能得到前兩個值填充。
一個更好的地方是在DataBindingComplete
和DefaultValuesNeeded
事件。
DataBindingComplete
將填寫第一次加載的所有值,然後DefaultValuesNeeded
將填充每一個新行。
DataBindingComplete:
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow r in dataGridView1.Rows)
{
r.Cells["AutoGenColumn"].Value = r.Index + 1;
}
}
DefaultValuesNeeded:
void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
dataGridView1.Rows[e.Row.Index].Cells["AutoGenColumn"].Value = e.Row.Index + 1;
}
這個要求似乎有點不尋常 - 你不解釋爲什麼你需要這個號碼,但你可能想看看將該行添加到底層數據集中(例如,使用DataTable很容易),或者像Subek建議的那樣將其放入行標題中。需要注意的
最後一兩件事 - 這種自動生成的列通常最好在CellValidating
事件完成,例如,當您和您概括另外兩列,一列。這不起作用,因爲你的專欄不是基於其他專欄,但值得一提的是一般的路線。
薩拉姆。 WindowsForms或Asp.NET? – Ria 2012-07-15 06:37:32
WindowsForms ... – 2012-07-15 06:39:12
看來你的方法是最簡單的方法,並正常工作 – Ria 2012-07-15 06:49:47