当前位置:编程学习 > C#/ASP.NET >>

DataTable的GetChange()函数

我用DataTable的GetChange()函数来获取对DataTable的更改
但是最后一行修改的,总是没有被记录下来,如果就修改一行,那么就什么都没有记录
请问各位大大,这事什么原因啊? --------------------编程问答-------------------- 控件的设置问题,有的方式下需要移动到另外1行记录,才更改了记录行状态。
比如datagridview,修改自动增加行 为真 就不需移动到另外1行记录。 --------------------编程问答-------------------- dataRow.BeginEdit();
//编辑行数据
dataRow.EndEdit();
dt.GetChange();  根据dataRow.RowState获取Changed数据 --------------------编程问答-------------------- 我是直接操作datagridview然后就直接GetChange()了,都不知道什么时候用dataRow.BeginEdit();
什么时候用dataRow.EndEdit();请问下,这个该放哪里啊 --------------------编程问答--------------------
引用 1 楼 zdbb 的回复:
控件的设置问题,有的方式下需要移动到另外1行记录,才更改了记录行状态。
比如datagridview,修改自动增加行 为真 就不需移动到另外1行记录。


我是控制datagridview的添加行隐藏的,不能让它显示,只能对现存的数据进行操作 --------------------编程问答-------------------- 大大们,帮帮忙啊 --------------------编程问答-------------------- DataGridView 绑定DataTable方式,进行编辑。
如果只在表格的某一行内进行编辑,且保持焦点只在这一行变动。
进行数据保存时这一行的变更就无法正常保存。

然后我有试着在保存之前调用 DataGridView 的EndEdit .
结果还是无法保存这一行的修改.

最后没有办法就试了试 bindingSource.
先将 DataTable 绑定到 bindingSource. 
再将 bindingSource设置为 DataGridView 的数据源.

在保存之前调用 bindingSource 的 EndEdit .
就能正常保存修改了.

这个办法就是微软提供的!bindingSource是2005新出来的 
把bindingSource作为中间层,比如 
bindingSource.DataSource=datatable 
datagridview.DataSource=bindingSource 
然后在保存的时候先使用bindingSource.EndEdit(); 
不过这个方法还是要把这个光标从一个单元格移到另个单元格(同行的也可以)
endEdit() 的作用是结束编辑状态,提交数据。 

--------------------编程问答-------------------- 6#正解,DT是单向数据源绑定,WinForm中没有像Web中Bind()那样的双向绑定表达式
但可以选择bindingSource或者BindingList<T>来代替实现双向绑定
http://blog.csdn.net/dongxinxi/article/details/6304355 --------------------编程问答-------------------- 使用bindingSource可以解决这个问题。 --------------------编程问答-------------------- 以前也遇到这样的问题  其中的一行 可以用 通过辅助标示字段 然后取  DT中的dataview 获取这个特殊行达到目的  
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,