搜尋此網誌

2011年7月8日 星期五

DataGridView排序後,如何抓取綁定資料的正確索引值

在寫Windows From程式時,發現DataGridView在與DataTable透過BindingSource綁定,在DataGridView進行資料的排序後,DataGridView中的資料Index將會與DataTable的Index不一致。
當選定的資料在進行修改後,因Index的不一致,導致在回存資料庫的時候無法斷定該回存哪一筆Row Data,這讓我很苦惱,一度想把DataGridView的排序給關閉,不讓使用者操作。
不過想想,這也不是根本的解決之道,況且在我的程式中,這DataGridView的排序是必要的,不然會造成使用者操作的不方便....
最後終於讓我找到解決方法,方式如下:

代碼:
this.datagridview1.DataSource = dt;
DataRowView drv = this.datagridview1.Rows[this.datagridview1.CurrentRow.Index].DataBoundItem as DataRowView;
int index = dt.Rows.IndexOf(drv.Row);
string s = dt.Rows[index][0].ToString().Trim();


說明如下:
先利用 datagridview1.Rows 找到目前選擇的資料行,然後轉換成DataRowView
在DataRowView中有一個屬性叫做Row,其代表DataTable中的DataRow
最後再利用DataTable.rows.IndexOf()方法回傳當前的Index。

沒有留言:

張貼留言