[转]DataGridView在与DataTable

 
2009-01-13 11:43

今天在写Windows From程序时,发现DataGridView在与DataTable透过BindingSource绑定,在DataGridView进行数据的排序后,DataGridView中的数据Index将会与DataTableIndex不一致,当选定的数据在进行修改后,因Index的不一致,导致在回存数据库的时候无法断定该回存哪一笔Row Data,这让我很苦恼,一度想把DataGridView的排序给关闭,不让使用者操作,不过想想,这也不是根本的解决之道,况且在我的程序中,这DataGridView的排序是必要的,不然会造成使用者操作的不方便....

在网络上找了好久,大部分都直接叫我关掉排序的功能....看到真是无言....,最后终于让我找到解决方法,方式如下:

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中的正确索引为何了!

posted @ 2009-07-14 10:10  愚蠢的笨蛋  阅读(3070)  评论(2编辑  收藏  举报