winform 的数据库应用程序,如何在关闭界面时判断数据修改?

chencang 2009-01-16 12:33:41
VS2005开发的WinForm数据库应用程序,在关闭数据录入界面时,如何判断关联到 bindingsource 的 TextBox 或 DataGridView 中的数据发生了更改(包括:插入、修改、删除)?进而提示保存后退出 或 取消退出
...全文
432 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_911 2009-01-16
  • 打赏
  • 举报
回复
设一个局部变量,如果窗体中的数据修改后,将变量值改变。然后在退出窗口时判断变量的值便可知道是否有数据已经更改。
vision_n 2009-01-16
  • 打赏
  • 举报
回复
用DataSet的HasChange()方法试试~
chencang 2009-01-16
  • 打赏
  • 举报
回复
5楼的朋友,谢谢关注!!

修改后未必要切换 DataGridView 的记录,比如:当前选中 DataGridView 第一条记录,此时所有 TextBox 都显示该条记录的明细信息,如果这时随意修改哪个 TextBox 里的内容,然后直接点当前窗口的关闭按钮,这样 TextBox 里的修改就不会自动提交到 DataSet 里面,从而 DataSet 的 HasChanges() 没有改变为true,DataSet 还是被判断为未发生修改


其实,我已经解决这个问题了,我在 FormClosing 事件里面先做 DataGridView 对应的 BindingSource 的 EndEdit,这样 TextBox 的修改就会反馈到 DataSet中了,HasChanges() 值为 true,呵呵。。。。
jacklee_008 2009-01-16
  • 打赏
  • 举报
回复
情况二:修改后切换一下 DataGridView 的记录,不是很符合用户的使用要求吗??
怎么可以修改了数据库却不能马上显示给用户呢??
确切的讲,不但要修改后切换一下 DataGridView 的记录,还有能显示出那条记录被修改了
所以DataSet的HasChange()方法,非常合适
chencang 2009-01-16
  • 打赏
  • 举报
回复
1楼的提示很有道理,我试了一下差不多。但是还有个问题

我的界面设计是这样:DataGridView 用来显示记录集(n条记录),用 TextBox 或 ComboBox 等显示 DataGridView 中当前选中记录的各字段内容,它们和 DataGridView 关联到同一个 bindingsource 。

情况一:直接在 DataGridView 中修改数据 dataSet.HasChanges() 的值会直接变成 true ,没问题!;

情况二:通过修改 TextBox 等字段显示框的内容,dataSet.HasChanges() 的值不会改变,除非修改后切换一下 DataGridView 的记录。(其实切换记录的结果就是把 TextBox 中修改的内容提交到 DataGridView 中,这就和情况一类似了)

大家有什么好办法吗?


2楼的方法比较麻烦。。。
chencang 2009-01-16
  • 打赏
  • 举报
回复
1楼的提示很有道理,我试了一下差不多。但是还有个问题

我的界面设计是这样:DataGridView 用来显示记录集(n条记录),用 TextBox 或 ComboBox 等显示 DataGridView 中当前选中记录的各字段内容,它们和 DataGridView 关联到同一个 bindingsource 。

情况一:直接在 DataGridView 中修改数据 dataSet.HasChanges() 的值会直接变成 true ,没问题!;

情况二:通过修改 TextBox 等字段显示框的内容,dataSet.HasChanges() 的值不会改变,除非修改后切换一下 DataGridView 的记录。(其实切换记录的结果就是把 TextBox 中修改的内容提交到 DataGridView 中,这就和情况一类似了)

大家有什么好办法吗?


2楼的方法比较麻烦。。。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧