WinForm中实体类批量修改、批量提交辅助类

在WinForm项目开发中习惯于对于集合数据的批量修改,再一次性提交更新同步到数据库。这里我们就必须实现对对象的改变的跟踪记录,我们实现对象的改变跟踪有许多方式,大致我尝试了两种方式:1:对象强制实现接口,State守信和MakeMark行为。2:利用字典序继续改变。虽然1的方式是否更加合理,但是在winform中与BindingSource集合使用简化修增修改的书写,配合的不是很好,供给开发人员使用不是很爽。于是我修改成为第二种方式集合记录更改,在继续在原集合真实修改,触发BindingSource事件和与BindingSource很好的结合。

   我们所要做的是对集合实体的变化做记录,这个在微软类库中的System.Data.DataTable一样,利用一套变化记录机制,我们可以抽象出我们接口:

复制代码
public  interface IObjectObserveable

{

bool IsCanReject

{

get;

}

void AcceptChanged();

void RejectChanged();

event ObjectCollectionChanged objectCollectionChanged;

IEnumerable<KeyValuePair< object, ObjectObserveChangeState>> GetChangeds();

IEnumerable< object> GetChangeds(ObjectObserveChangeState changedState);

}

public  enum ObjectObserveChangeState

{

None, Add, Modify, Delete

}
复制代码
接口中: 

1:包含守信IsCanReject表示是否可以回滚(必须是可序列化的集合者可以回滚,内部利用序列化实现单级撤销)。

2:AcceptChanged表示接受更改。

3:RejectChanged拒绝更改回滚。

4:GetChangeds获取数据集合的更改或者某类型更改的集合。

数据更改通知事件:

View Code

最后对于List集合的实现如下: 

View Code

在最后WinForm中测试: 

View Code

对于新增和删除我们只需利用BindingSource的,bs.AddNew() 和bs.RemoveCurrent();感觉使用起来方便了吧。最后获取数据更改利用GetChangeds。对于保存后AcceptChanges。 

效果图:

欢迎大家指正和建议,希望能够共同进步,谢谢。


本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2012/03/27/2419289.html,如需转载请自行联系原作者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值