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
| 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 |