[UP有分解决即刻结帖]控件与数据正确绑定情况下调GetChanges()无法正确获得界面修改

Mr.Osc 2004-05-06 02:00:34
// 数据集填充等代码只是为说明数据表结构。
string selectTxt = "SELECT person_no, person_fname, person_lname, person_sex, person_birth, " +
"person_id FROM person_table1";
DataTable dataTable1 = new DataTable("person_table1");
DataSet dataSet1 = new DataSet("DB");
// 设置Adapter以及Fill过程省略...
dataSet1.Tables.Add(dataTable1);
DataView dataView1 = new DataView(dataTable1, "", "", DataViewRowState.CurrentRows);
TextBox textBox1 = new TextBox();
textBox1.DataBindings.Add("Text", dataView1, "person_fname");

绑定后在界面的textBox1上做修改(相关数据集已经设为可修改AllowEdit = true)后,用GetChanges()方法返回的

DataSet为null,以下为代码:

textBox1.BindingContext[dataSet1, "person_table1"].EndCurrentEdit();
DataSet dsChanges = dataSet1.GetChanges();
// 结果dsChanges为null

我调试过程中发现在调EndCurrentEdit()方法后,虽然dataSet1中表的各行的数据已经被修改,但被修改行的

DataRowState仍为Unchanged。

我的应用为Windows Application形式。
操作系统为WindowsXP,编译框架是FrameWork1.1+VS2003,数据库是Firebird(Interbase的开源版)
...全文
40 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Mr.Osc 2004-05-07
谢谢,解决了。。
  • 打赏
  • 举报
回复
orswanic 2004-05-07
你无法获得界面上所做更改的原因是你的控件与dataview绑定,但是你用BindingContext的时候确是根据表名得到BindingManagerBase的
把代码做如下更改:
textBox1.BindingContext[dataView1].EndCurrentEdit();
即可。
  • 打赏
  • 举报
回复
firstshui 2004-05-06
我也遇到了这个问题,关注……
  • 打赏
  • 举报
回复
firstshui 2004-05-06
顶顶顶
  • 打赏
  • 举报
回复
kob 2004-05-06
up
  • 打赏
  • 举报
回复
shuhill 2004-05-06
帮顶
  • 打赏
  • 举报
回复
yumei20001 2004-05-06
先帮你顶一下!
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-05-06 02:00
社区公告

让您成为最强悍的C#开发者