功能描述
无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,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),及时了解最新动态。
使用微信扫描二维码立即关注
相关推荐
WinForm+Access主从表单据设计保存主表出错
在.NET框架中,开发数据库应用时经常会遇到主从表(Master-Child)的概念。主从表是一种一对多的关系,例如,一个订单(主表)可以包含多个订单详情(子表)。在这个实例中,我们将探讨如何使用C#和.NET来实现主从表...
### FastReport for .Net 主从表(Master/Detail)报表设计详解 FastReport for .Net 是一款功能强大的报表设计工具,适用于.NET平台上的各种应用程序,包括但不限于Windows Forms、ASP.NET和WPF应用。主从表...
在数据库设计中,主从表(也称为父子表或一对多关系)用于表示两个表之间的关系,其中一个表(主表)有一条记录对应多个记录在另一个表(从表)中。例如,一个员工表(主表)可能包含多个项目表(从表),每个员工...
在Delphi编程环境中,主从表(Master-Detail)是一种常见的数据展示方式,它用于处理一对多的关系,例如一个订单可以包含多个商品项。在这个"Delphi主从表自创实例"中,我们将深入探讨如何在Delphi中实现这种关系,...
本项目“Repeater实现主从表浏览”利用Visual Studio 2008(VS2008)和Northwind数据库,为我们展示了一个如何在ASP.NET环境中通过Repeater控件来呈现这种关系的实例。下面将详细讲解这个知识点。 **Repeater控件**...
在.NET MVC框架中,开发一个主从表浏览的界面是一个常见的需求,这通常涉及到数据的层级展示和交互。本项目“嵌套Repeater实现主从表浏览(MVC)”利用Visual Studio 2008和Northwind数据库,提供了一个有效的解决...
在这个特定的问题中,用户遇到了一个常见但棘手的异常情况:在主从表中,当尝试对已有主表记录进行从表的二次新增记录时,新添加的记录不会立即显示,只有在刷新界面后才会出现。 这个问题可能是由以下几个原因导致...
利用TClientDataSet制作主从表是数据库应用设计中的常见方法,可以有效地管理和展示关联数据,类似于Access或SQL Server中的关系模型。下面我们将详细介绍如何使用Delphi的内存表来实现这一功能。 首先,了解主从表...
在这个场景中,"DELPHI 主从表控制"的讨论主要聚焦于如何在三层架构中设置和管理主从表。 首先,我们来详细理解主从表的概念。主表(Master Table)通常包含唯一标识符,而从表(Detail Table)通过这个标识符与主...
vs2012.net 主从表微软标准示例 初学c#,在网上搜了半天主从表的知识,结果看到微软正宗的主从表示例,仅需一个类就完成了,感受到了.net的强大。窗体、控件全部动态生成。适合初学者看看。 内附Northwind 数据库...
在实现主从表关联时,我们通常会有一个主表(如客户表)和一个或多个从表(如订单表)。主表的数据会在`DataGridView`的一个面板中显示,而从表的数据则在另一个嵌套的`DataGridView`中显示,这通常通过`...
在本例中,我们将深入探讨如何从cxGrid组件中导出主从表记录,并获取从表的记录数。 首先,cxGrid的主表通常用于展示主要数据,而从表则用于显示与主表记录相关联的详细信息。在导出这些数据时,我们需要确保两部分...
在ASP.NET开发中,"GridView无刷新主从表联动"是一种常见的数据展示方式,它能够提升用户体验,使得用户在查看和操作数据时无需等待页面完全刷新。这种技术通常用于显示两个相关联的数据表,其中一个是主表,另一个...
在DevExpress的.NET开发工具集中,GridControl是一款强大的数据呈现控件,它提供了丰富的功能和高度定制性,使得在Windows Forms应用程序中实现主从表关系变得简单。主从表(Master-Detail)是一种常见的数据展示...
在.NET开发环境中,DevExpress是一款强大的UI控件集,它提供了丰富的功能来构建高效、美观的桌面和Web应用程序。本主题将深入探讨如何使用DevExpress控件实现主从表(Master-Detail)关系,这是一种常见的数据展示...
在数据库设计中,主从表(也称为一对多关系)是一种常见的关系模型,其中一张表(主表)可以有多条记录与另一张表(从表)的一条记录相对应。例如,一个顾客(主表)可以有多个订单(从表)。 在Silverlight中,...
在IT领域,主从表(Master-Slave Table)是一种常见的数据库设计模式,特别是在处理大量数据和并发操作时。这种模式主要用于分摊读写压力,提高数据查询效率,以及实现数据冗余和备份。在本案例中,我们将通过Visual...
### 用ASP.NET在同一网页中显示主从关系表的相关数据 #### 方法概述 在ASP.NET中,为了实现在同一网页上直观地展示具有主从关系的数据表,可以通过一系列的编程技巧来达到目的。这种方法主要是利用ASP.NET提供的...
一、使用视图meeting将多表关联整合在一起 二、通过Sql语句筛选数据 三、建立和主从表的关联 四、注意在CrystalReport1表中插入子报表的时候,一定要将主从表的关联字段设置好,否则出乱子