WinForm应用程序框架设计之WinAction(数据操作)

我们来先看看WinAction的有关数据操作的流程:(包括更新数据操作和取消更新的操作)


具体的参考代码:

更新数据操作:

        /// <summary>
        /// 实体更新时执行
        /// </summary>
        /// <param name="entity">当前操作的实体</param>
        /// <param name="caller">修改对象(窗体)</param>
        /// <param name="sender">修改对象(窗体)的按钮</param>
        /// <param name="e">唤出窗体的事件参数</param>
        public virtual void SaveEntity(object entity, object caller, object sender, EventArgs e)
        {
            try
            {
                object mResult = useBll.Update((T)entity);
                //卸载修改窗体的方法
                if (caller is IEditDataForm)
                    UnloadEditForm(caller as IEditDataForm);
                //隐藏执行该方法的窗体(修改窗体)
                if (caller is Form)
                    (caller as Form).Hide();
                if (AfterUpdateEntity != null)
                    AfterUpdateEntity(entity, caller, this, e);
            }
            catch (Exception ex)
            {
                /*
                if (entity is Entity)
                {
                    if (!(entity as Entity).IsNewEntity)
                    {//出错时把数据实体的数据进行恢复
                        if (caller is IBindEntityAware)
                            (caller as IBindEntityAware).RecoverEntity(entity);
                    }
                }*/
                if (AfterUpdateEntityError != null)
                    AfterUpdateEntityError(entity, caller, this, e);
                else
                    throw new Exception(ex.Message, ex);
            }
        }

        /// <summary>
        /// 更新实体对象列表时执行
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="caller">修改对象(窗体)</param>
        /// <param name="sender">修改对象(窗体)的按钮</param>
        /// <param name="e">唤出窗体的事件参数</param>
        public virtual void UpdateEntitys(object entity, object caller, object sender, EventArgs e)
        {
            try
            {
                if (caller is IDataListEdit)
                {
                    IEnumerable deletedList = (caller as IDataListEdit).GetDeletedDataList();

                    foreach (object delData in deletedList)
                        useBll.Delete(TransformToEntity(delData));

                    IEnumerable updateList = (caller as IDataListEdit).GetCurrentDataList();

                    foreach (object curData in updateList)
                        useBll.Update(TransformToEntity(curData));
                }
                //卸载修改窗体的方法
                if (caller is IEditDataForm)
                    UnloadEditForm(caller as IEditDataForm);
                if (caller is Form)
                    (caller as Form).Hide();
                if (AfterUpdateEntity != null)
                    AfterUpdateEntity(entity, caller, this, e);
            }
            catch (Exception ex)
            {
                if (AfterUpdateEntityError != null)
                    AfterUpdateEntityError(entity, caller, this, e);
                else
                    throw new Exception(ex.Message, ex);
            }
        }
注意,有两种更新的方式:一种是单个数据实体更新,另外一个就是批量更新。

取消操作:

        #region (修改窗体)实体操作方法
        /// <summary>
        /// editform执行的取消实体更新时执行
        /// </summary>
        /// <param name="entity">当前操作的实体</param>
        /// <param name="caller">修改对象(窗体)</param>
        /// <param name="sender">修改对象(窗体)的按钮</param>
        /// <param name="e">唤出窗体的事件参数</param>
        public virtual void CancelUpdateEntity(object entity, object caller, object sender, EventArgs e)
        {
            //editform执行的取消更新过程
            if (AfterUpdateEntityCancel != null)
                AfterUpdateEntityCancel(entity, caller, this, e);
            if (caller is IEditDataForm)
                UnloadEditForm(caller as IEditDataForm);
            if (caller is Form)
                (caller as Form).Hide();
        }

原创作品出自努力偷懒,转载请说明文章出处http://blog.csdn.net/kfarvid 或 http://www.cnblogs.com/kfarvid/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值