功能描述

无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,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版本发布-重大升级

代码生成器下载

1、代码生成器使用说明下载

2、代码生成器百度网盘下载地址

3、代码生成器本地下载


一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。

RDIFramework.NET官方网站:http://www.rdiframework.net/

RDIFramework.NET官方博客:http://blog.rdiframework.net/

特别说明,框架相关的技术文章请以官方网站为准,欢迎大家收藏!

RDIFramework.NET框架由专业团队长期打造、一直在更新、一直在升级,请放心使用!

欢迎关注RDIFramework.net框架官方微信公众号(微信号:guosisoft),及时了解最新动态。

使用微信扫描二维码立即关注

RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例的更多相关文章

  1. RDIFramework.NET V3.3 WinForm版新增日程管理功能模块

    功能描述 日程管理基于月.周.日的日历视图,把安排到每一天的具体时间点,让每一天的时间都充分利用:甚至您也可以把个人非工作事项也安排进来,完全是属于自己的全时间管理.就是将每天的工作和事务安排在日期中 ...

  2. RDIFramework.NET V3.3 WinForm版角色授权管理新增角色对操作权限项、模块起止生效日期的设置

    在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定角色访问.此时通过我们的角色权限扩展设置就可以办到. 在我们框架V3.3 WinForm版全新增加了角色权限扩 ...

  3. RDIFramework.NET V3.3 Web版新增报表管理功能模块-重量级实用功能

    功能描述 在RDIFramework.NET V3.3 Web版本新增了全新的报表管理功能模块,非常实用的功能,重量级推荐.主要用于对日常常用的报表做定制展示.可以自动发布到模块(就可授权给指定资源访 ...

  4. RDIFramework.NET V3.3 Web版新增日程管理功能模块

    功能描述 在RDIFramework.NET V3.3 Web版本我们新增了日程管理.基于月.周.日的日历视图,把安排到每一天的具体时间点,让每一天的时间都充分利用:甚至您也可以把个人非工作事项也安排 ...

  5. RDIFramework.NET V3.3 Web版新增系统公告、系统新闻模块方便需要的客户

    1.系统新闻功能描述 在RDIFramework.NET V3.3版本中新增了系统新闻模块,用户可以根据实际情况做相应应用,如用在内部业务系统的展示中或网站上新闻的展示.新闻可以分类进行管理,非常的实 ...

  6. RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的设置

    在实际应用在我们可能会有这样的需求,某个操作权限项(按钮)或菜单在某个时间范围内可以让指定角色访问.此时通过我们的角色权限扩展设置就可以办到. 在我们框架V3.3 Web版本全新增加了角色权限扩展设置 ...

  7. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增消息管理

    在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“消息管理”模块.“消息管理”模块是对框架的所有消息进行管理.通过左侧的消息分类可以查看所选分类的所有消息列表.在主界面上我 ...

  8. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增系统参数管理

    欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 在V3.0版本的Web(Mvc.WebForm)与WinF ...

  9. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-WinForm部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本 新增岗位管理-WinForm部分 岗位(职位)管理模块主要是针对组织机构的岗位(职位)进行管理,包括:增加.修改. ...

随机推荐

  1. Java并发编程(五)锁的使用(下)

    显式锁 上篇讲了使用synchronized关键字来定义锁,其实Java除了使用这个关键字外还可以使用Lock接口及其实现的子类来定义锁,ReentrantLock类是Lock接口的一个实现,Reen ...

  2. 【bzoj 4407】于神之怒加强版

    Description 给下N,M,K.求     Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意 ...

  3. BZOJ_3365_[Usaco2004 Feb]Distance Statistics 路程统计&&POJ_1741_Tree_点分治

    BZOJ_3365_[Usaco2004 Feb]Distance Statistics 路程统计&&POJ_1741_Tree_点分治 Description     在得知了自己农 ...

  4. html中layui+jfinal模板实现前端搜索功能

    <input type="text" id="campus" class="layui-input" onkeyup="ck ...

  5. Android 8.1 源码_启动篇(一) -- 深入研究 init(转 Android 9.0 分析)

    前言 init进程,它是一个由内核启动的用户级进程,当Linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,确切的说,它是Linux系统中用户控件的第一个进程,所以它的进程号是1 ...

  6. 使用BeetleX的TcpBenchmark工具进行百万设备模拟测试

    其实TCP测试的工具有很多,那BeetleX工具所提供的特点又是什么呢?如果你需数十万的请求或模拟上百万的设备连接,那这个工具相信可以满足你的需要!工具是基于BeetleX的基础功能扩展,支持多IP绑 ...

  7. ASP.Net Core MVC 发生二次请求

    Bug回忆录 昨天搭建新框架的时候,遇到一个很奇怪的“Bug”,每次请求都会触发两次Aciton,举例子吧,Demo: _Layout.cshtml <!DOCTYPE html> < ...

  8. 游戏AI之感知(1)

    目录 感知 视觉感知 听力感知 其它感知 实现 感知 视觉感知 视觉感知是一种常见的感知. 在许多即时战略游戏或者类DOTA游戏里,一个单位的视觉感知往往是圆形范围的. 当然在其他大部分俯视角游戏里, ...

  9. 用animation的steps属性制作帧动画

    昨天火急火燎地接到一个任务,说是要做一个掷骰子的游戏,关于掷骰子期间的过渡动画,我本来是想用css 3d制作一个立体的骰子,然后叫UI给6张平面图贴上去.再用translate3d来操作.然而UI考虑 ...

  10. 关于静态注册BroadcastReceiver接收不到广播的问题

    1.背景&解决方法 最近碰到一个需求,app监听特定的广播,接收到广播后启动自己再进行处理.需求很简单,静态注册就好,不过,在自测的时候遇到一个问题,app安装后没启动过的状态下,什么广播都收 ...