DataGridView绑定DataTable排序的误区(转载请注明出处)
2010-03-17 17:52
387 查看
正确解决办法:
1.对于要读取数据的时候。直接取出绑定的行即可
DataRowView drv = dataGridView1.Rows[e.RowIndex].DataBoundItem as DataRowView;
DataRow dtr = drv.Row;
////注:此处的e为事件方法中的DataGridViewCellFormattingEventArgs e变量。
/////article/5424222.html
2.对于要修改数据的时候。加一步取出Index即可
DataRowView drv = dataGridView.SelectedRows[0].DataBoundItem as DataRowView;
int index = dataTable.Rows.IndexOf(drv.Row);
/////article/5424222.html
误区一:
private void dataGridView1_Sorted(object sender, EventArgs e)
{
string _sortStr = this.dataGridView1.SortedColumn.Name; //取得当前排序列列名
SortOrder _so = this.dataGridView1.SortOrder;//取得排序顺序
if (_so == SortOrder.Ascending)
{
_sortStr += " asc";
}
else
{
_sortStr += " desc";
}
DataView _dv = this.dtb.DefaultView;
_dv.Sort = _sortStr; //排序
this.dtb = _dv.ToTable(); //将排序后的datatable赋给dataGridView1所绑定this.dtb
}
评点。此方法确实对原始DataTable给予了排序。
但是在使用的过程中你会发现:DataTable中的顺序与DataGridView的排列并不完全一样。仍然会导致错误。而且不容易发现问题。
/////article/5424222.html
误区二:
“不要直接把DATATABLE绑定到GridView上,用DataTable.DefaultView来进行绑定,那么Gridview上的顺序和DataView里的顺序就是一样的了”
评点:事实证明。结果和直接绑定DataTable效果一样。对DataGridView的排序并没有影响到DataTable.DefaultView。
/////article/5424222.html
来源:
http://www.baddog.idv.tw/notebook.php?mo=notebook&fn=view&id=5
原文:
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中的正確索引為何了
1.对于要读取数据的时候。直接取出绑定的行即可
DataRowView drv = dataGridView1.Rows[e.RowIndex].DataBoundItem as DataRowView;
DataRow dtr = drv.Row;
////注:此处的e为事件方法中的DataGridViewCellFormattingEventArgs e变量。
/////article/5424222.html
2.对于要修改数据的时候。加一步取出Index即可
DataRowView drv = dataGridView.SelectedRows[0].DataBoundItem as DataRowView;
int index = dataTable.Rows.IndexOf(drv.Row);
/////article/5424222.html
误区一:
private void dataGridView1_Sorted(object sender, EventArgs e)
{
string _sortStr = this.dataGridView1.SortedColumn.Name; //取得当前排序列列名
SortOrder _so = this.dataGridView1.SortOrder;//取得排序顺序
if (_so == SortOrder.Ascending)
{
_sortStr += " asc";
}
else
{
_sortStr += " desc";
}
DataView _dv = this.dtb.DefaultView;
_dv.Sort = _sortStr; //排序
this.dtb = _dv.ToTable(); //将排序后的datatable赋给dataGridView1所绑定this.dtb
}
评点。此方法确实对原始DataTable给予了排序。
但是在使用的过程中你会发现:DataTable中的顺序与DataGridView的排列并不完全一样。仍然会导致错误。而且不容易发现问题。
/////article/5424222.html
误区二:
“不要直接把DATATABLE绑定到GridView上,用DataTable.DefaultView来进行绑定,那么Gridview上的顺序和DataView里的顺序就是一样的了”
评点:事实证明。结果和直接绑定DataTable效果一样。对DataGridView的排序并没有影响到DataTable.DefaultView。
/////article/5424222.html
来源:
http://www.baddog.idv.tw/notebook.php?mo=notebook&fn=view&id=5
原文:
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中的正確索引為何了
相关文章推荐
- 点击DataGridView列标题排序后,绑定的DataTable也相应的排序, DataGridView和DataTable数据具有一致性 (新增加了sorted事件的排序方式)
- STL sort 函数实现详解 作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现。以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的
- 最简单之Java实现冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序(转载请注明出处)
- Hystrix 使用与分析 博客分类: ● Distribution ● CoreJava DistributionJavaSOA 转载请注明出处哈:http://hot66hot.it
- List<T>绑定到datagridview时不能排序
- DataGridView 绑定List集合后实现自定义排序
- Winform中DataGridView绑定IList数据源后的排序
- 基于RTP的音视频封装和同步方案设计图案【转载请注明出处】
- VAX v10.9.2062.0-52pj vDie 分析 【转载请注明出处】
- ARM处理器模式弹跳机制的初始化 笔记版 转载请注明出处---crosskernel@gmail.com
- 14) 常用的遍历/(条件)查找/收集数据/(拷贝2比较优先)排序算法algorithm [原创,泛型编程,自由下载转载,需注明出处]
- 浅谈对物联网的理解(转载清注明出处,会根据完成进度实时更新)
- c# DataGridView绑定DataTable数据源并指定对应
- 8皇后问题(可以是其他数字的皇后)(转载注明出处谢谢!!)
- 解决DataGridView绑定List后不能排序的问题
- LAMP环境搭建 (原创帖,转载请注明出处)
- Apache开启状态查看页面(原创贴-转载请注明出处)
- Vista中应用程序需要Administrator权限,自动提示用户需要管理员权限的方法 (原创,转载请注明出处)
- ProbS CF matlab源代码(二分系统)(原创作品,转载注明出处,谢谢!)
- DataSet,DataTable排序(转载)