内容简介:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/84983243
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/84983243
功能描述
无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的, RDIFramework.NET V3.3 WinForm版本中新增了一个主从表的事例供大家参考。主从表的界面设计大同小异,主要还是在处理CRUD操作时的一些特殊性,如:新增、修改、删除操作要放在同一事务提交,删除主表数据,从表对应数据也应相应删除等。主从表一般涉及两个以上的表,一个是主表,其他的是从表的,在实际情况下,一般包含两个表较多,下面我们以两个表的主从表关系进行分析展示。
订单管理主从表关系结构图
功能展示
对于订单管理主从表结构信息,主界面展示分为两部分:一部分是主表信息,一部分是从表信息,单击主表对应信息后,显示对应从表的列表信息,如下图所示。
新增产品如下图所示,丰富的控件展示,列表直接编辑,自动计算并汇总等实用功能。
打印功能:
核心功能代码参考
编辑界面保存代码参考
在编辑界面不仅可以新增数据,还可以编辑数据,调用相同的保存数据的方法。
//保存数据 private void btnSave_Click(object sender, EventArgs e) { if (!this.Changed) { //数据未被修改过就直接返回即可 this.DialogResult = DialogResult.OK; this.Close(); } else { CaseOrderEntity orderEntity = GetFormOrderEntity(); grdOrderDetail.FocusedView.CloseEditor(); var orderDetailList = new List<CaseOrderDetailEntity>(); for (int i = 0; i < this.gridViewOrderDetail.RowCount; i++) { var detailInfo = gridViewOrderDetail.GetRow(i) as CaseOrderDetailEntity; detailInfo.OrderId = orderEntity.Id; if (detailInfo != null) { orderDetailList.Add(detailInfo); } } try { int returnValue = caseOrderService.SaveOrder(this.UserInfo, OrderId, orderEntity, orderDetailList); if (returnValue > 0) { MessageBoxHelper.ShowSuccessMsg(RDIFrameworkMessage.MSG0011); this.DialogResult = DialogResult.OK; this.Close(); OnFormClosedRefreash?.Invoke(); } } catch (Exception ex) { ProcessException(ex); } } }
保存数据服务实现参考
/// <summary> /// 新增或修改 /// </summary> /// <param name="userInfo">用户</param> /// <param name="keyValue">主键值</param> /// <param name="entity">实体对象</param> /// <param name="detailEntitys">明细对象</param> /// <returns></returns> public int SaveOrder(UserInfo userInfo, string keyValue, CaseOrderEntity entity, List<CaseOrderDetailEntity> detailEntitys) { int returnValue = 0; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, "SaveOrder-新增或修改"); ServiceUtil.ProcessBusinessDbWithTran(userInfo, parameter, dbProvider => { if (!string.IsNullOrEmpty(keyValue)) { //主表 var manager = new CaseOrderManager(dbProvider, userInfo); entity.Id = keyValue; returnValue = manager.UpdateEntity(entity); //明细表 var managerDetail = new CaseOrderDetailManager(dbProvider, userInfo); managerDetail.Delete(new KeyValuePair<string, object>(CaseOrderDetailTable.FieldOrderId, keyValue)); foreach(CaseOrderDetailEntity orderDetail in detailEntitys) { orderDetail.OrderId = keyValue; orderDetail.Enabled = 1; orderDetail.DeleteMark = 0; managerDetail.Add(orderDetail); } } else { //主表 var manager = new CaseOrderManager(dbProvider, userInfo); entity.Enabled = 1; entity.DeleteMark = 0; string orderKey = manager.Add(entity); returnValue = string.IsNullOrEmpty(orderKey) ? 0 : 1; //明细表 var managerDetail = new CaseOrderDetailManager(dbProvider, userInfo); foreach (CaseOrderDetailEntity orderDetail in detailEntitys) { orderDetail.OrderId = orderKey; orderDetail.Enabled = 1; orderDetail.DeleteMark = 0; managerDetail.Add(orderDetail); } } }); return returnValue; }
参考文章
RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录
RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用
RDIFramework.NET代码生成器全新V3.5版本发布-重大升级
代码生成器下载
一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。
RDIFramework.NET官方网站: http://www.rdiframework.net/
RDIFramework.NET官方博客: http://blog.rdiframework.net/
特别说明,框架相关的技术文章请以官方网站为准,欢迎大家收藏!
RDIFramework.NET框架由专业团队长期打造、一直在更新、一直在升级,请放心使用!
欢迎关注RDIFramework.net框架官方微信公众号(微信号: guosisoft ),及时了解最新动态。
使用微信扫描二维码立即关注
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
无懈可击的Web设计
【美】Dan Cederholm / 马跃 / 清华大学出版社 / 2012-5 / 39.00元
本书将指导您采用标准设计策略来满足以各种方式浏览网页的各类用户的需要。每章首先列举一个沿用传统HTML技术的实例,然后指出该实例的局限性,并利用XHTML和CSS对其进行重构。从中您将学会如何用简洁高效的HTML标记和CSS来取代臃肿的代码,从而创建加载速度极快、能供所有用户使用的网站。本书最后将前面各章讨论的所有页面组件珠联璧合地结合在一起,制作了一个页面模板。这一版全面润色和更新了上一版本,介......一起来看看 《无懈可击的Web设计》 这本书的介绍吧!