RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例
功能描述
无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,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;
}
- 全新跨平台版本.NET敏捷开发框架-RDIFramework.NET5.0震撼发布
- RDIFramework.NET敏捷开发框架助力企业BPM业务流程系统的开发与落地
- 通过SignalR技术整合即时通讯(IM)在.NET敏捷开发框架中落地
- RDIFramework.NET WinForm版新增通知公告、系统新闻模块
- RDIFramework.NET Web版报表管理-助力企业高效智能图表
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录
- RDIFramework.NET敏捷开发框架 ━ 工作流程组件介绍
- RDIFramework.NET敏捷开发框架 ━ 工作流程组件Web业务平台
- RDIFramework.NET敏捷开发框架 ━ 工作流程组件WinForm业务平台
- 微信公众号开发系列-玩转微信开发-目录汇总
- 史上最全面的SignalR系列教程-目录汇总
- RDIFramework.NET敏捷开发框架通过SignalR技术整合即时通讯(IM)
- RDIFramework.NET框架基于Quartz.Net实现任务调度详解及效果展示
- RDIFramework框架整合微信开发应用效果展示
一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。
RDIFramework.NET官方网站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
特别说明,框架相关的技术文章请以官方网站为准,欢迎大家收藏!
RDIFramework.NET框架由海南国思软件科技有限公司专业团队长期打造、一直在更新、一直在升级,请放心使用!
欢迎关注RDIFramework.NET框架官方微信公众号(微信号:guosisoft),及时了解最新动态。
使用微信扫描二维码立即关注
- 本文标签: .NET RDIFramework.NET
- 版权声明: 本站原创文章,由rdiframework.net发布,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。