有个问题一直没搞清楚,请大家帮帮吗!

纳尼 2013-01-06 12:01:19
Department类
class Department
{
public string ID{get;set;}
public string Name {get; set;}
}

User类
class User
{
public string ID{get;set;}
public string Name {get; set;}
public Department Dept { get; set; }
}

// 用户属性对话框,画面上有三个文本框,一个存放ID,一个存放用户名和一个部门描述文本框,另外还有一个确定按钮和一个取消按钮。
class UserDialog:Form
{
public User User{ get; set; }
}
我现在想要通过这个对话框来编辑或新建一个用户,并将数据保存到数据库

现在,我有下面几个方法更新数据库
1、在编辑对话框中文本框字段的同时直接修改属性User中字段的值,然后在打开对话框的方法中更新数据(对话框只起到编辑对象的作用,并不更新数据库)。
2、在编辑对话框中文本框字段时并不修改属性User中字段的值,而是在确定按钮事件里面更新数据库,如果更新成功在修改User各个属性的值。

我到底应该怎么做呢。

我觉得最自然的应该是第一种,但如果数据库更新失败,就会造成User中的属性与数据中的不一致。
我到底应怎么处理这类问题,请大家帮帮忙!
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
纳尼 2013-01-07
  • 打赏
  • 举报
回复
引用 7 楼 wanghui0380 的回复:
你后面这个问题,则和另外一个数据绑定接口INotifyPropertyChanged接口,这个接口实现的是属性更改通知。 当对象属性变更时,他会触发属性变更事件通知,外面订阅了此事件的UI数据绑定管理对象,去自动刷新UI更新数据
请看看我的理解对不对哈 1、Hashtable table; // 存放对象和ListViewItem的对应关系 2、根据对象创建一个ListViewItem并注册对象的PropertyChanged事件 3、在事件处理中编写从table中查找对应ListViewItem并使用新值更新ListViewItem的文本呢
wanghui0380 2013-01-07
  • 打赏
  • 举报
回复
你后面这个问题,则和另外一个数据绑定接口INotifyPropertyChanged接口,这个接口实现的是属性更改通知。 当对象属性变更时,他会触发属性变更事件通知,外面订阅了此事件的UI数据绑定管理对象,去自动刷新UI更新数据
纳尼 2013-01-07
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
临时在viewmodel里实现这个东西,粗看起来很麻烦,实际上使用上反而更简单点 1.是可以保证数据和界面分离,保持逻辑纯粹 2.是可以省掉很多复杂的界面数据交互/数据同步事件
谢谢,我还有个问题 比如我打开两个Windows资源管理器窗口,并且显示相同的目录,当我对其中一个窗口中的文件重命名,另一个中的这个文件的名字也会改变,删除、移动之类的操作也同样。 请问,如果使用Winform中的ListView要实现类似的功能话,我该怎么做?
fieldtianye 2013-01-07
  • 打赏
  • 举报
回复
老A貌似写过一篇, 让 变量 也支持事务的文章,去看看,应该对你说的有帮助。 让 变量改变和数据库更新逻辑置于同意逻辑事务,如果数据更成成功,变量改变,否则一同回到原来状态。 你可以研究下,我当时没注意看那个文章, 对于变量需要用事务实际中没遇到过,不过看你的需求貌似这儿用的着。
cs张 2013-01-06
  • 打赏
  • 举报
回复
引用 2 楼 andrew28 的回复:
引用 1 楼 wanghui0380 的回复:你只需要知道一个基础数据绑定接口,IEditableObject 是怎么工作的即可 这个接口在真实的项目中会经常用到吗?
难道还有用不到的接口?
纳尼 2013-01-06
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
你只需要知道一个基础数据绑定接口,IEditableObject 是怎么工作的即可
这个接口在真实的项目中会经常用到吗?
wanghui0380 2013-01-06
  • 打赏
  • 举报
回复
你只需要知道一个基础数据绑定接口,IEditableObject 是怎么工作的即可
wanghui0380 2013-01-06
  • 打赏
  • 举报
回复
临时在viewmodel里实现这个东西,粗看起来很麻烦,实际上使用上反而更简单点 1.是可以保证数据和界面分离,保持逻辑纯粹 2.是可以省掉很多复杂的界面数据交互/数据同步事件
wanghui0380 2013-01-06
  • 打赏
  • 举报
回复
对,经常使用。尤其是那波号称MVVM的兄弟们手上 INotifyPropertyChanged,IEditableObject,IDataErrorInfo 这几个绑定相关接口可以说使用的非常频繁,因为界面UI智能数据绑定直接依靠这个几个接口 ps:MVVM不只可以用在wpf上,其实winform一样用,而且已经使用了N年了,只是当初并木有MVVM这个词出现。

110,567

社区成员

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

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

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