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

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

在網路上找了好久,大部分都直接叫我關掉排序的功能....看到真是無言....,最後終於讓我找到解決方法,方式如下:

// DataRowView drv = dataGridView.CurrentRow.DataBoundItem as DataRowView;
DataRowView drv = dataGridView.SelectedRows[0].DataBoundItem as DataRowView;
int index = dataTable.Rows.IndexOf(drv.Row);

看程式看不懂嗎?說明如下:

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

如此一來,在DataGridView排序後,仍可順利的取得目前編輯的資料在DataTable中的正確索引為何了!


2008-03-20 21:37:25

I said something before.....
Label 在 PictureBox 上背景不能透明 2021-05-24 06:32
Textbox限制輸入數字 2016-11-14 21:17
C# 字串分割 2016-07-28 20:25
LINQ筆記 2016-07-27 03:33
SQL Server的記錄檔無限成長 2015-11-02 05:47
安裝MySQL ODBC 5.2錯誤 – Error 1918 2014-02-03 19:27
在Reporting Service報表上顯示QRCode 2013-04-01 02:59
SQL Server DB管理筆記 2012-07-05 20:21
還原MSSQL遇到「備份組包含現有的XXX資料庫以外的資料庫備份」的錯誤 2012-05-15 12:35
Informix計算兩時間的差距 2010-08-12 06:01
ReportViewer顯示LocalReport及ServerReport 2010-05-24 04:13
SQL Server取得當月第一天及最後一天 2010-01-19 00:00
簡單的對DataTable做Distinct 2009-09-20 22:18
使用 svcutil 編譯 WCF 錯誤解法 2009-07-09 07:59
PHP加載MSSQL函式庫 2008-10-20 08:54