`

RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例

阅读更多

无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,RDIFramework.NET V3.3 WinForm版本中新增了一个主从表的事例供大家参考。主从表的界面设计大同小异,主要还是在处理CRUD操作时的一些特殊性,如:新增、修改、删除操作要放在同一事务提交,删除主表数据,从表对应数据也应相应删除等。主从表一般涉及两个以上的表,一个是主表,其他的是从表的,在实际情况下,一般包含两个表较多,下面我们以两个表的主从表关系进行分析展示。

 

订单管理主从表关系结构图

 

对于订单管理主从表结构信息,主界面展示分为两部分:一部分是主表信息,一部分是从表信息,单击主表对应信息后,显示对应从表的列表信息,如下图所示。
file

新增产品如下图所示,丰富的控件展示,列表直接编辑,自动计算并汇总等实用功能。
file

file

file

file

打印功能:
打印功能

 

编辑界面保存代码参考

在编辑界面不仅可以新增数据,还可以编辑数据,调用相同的保存数据的方法。

        //保存数据
        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),及时了解最新动态。

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

file

0
0
分享到:
评论

相关推荐

    WinForm主从表单据设计

    WinForm+Access主从表单据设计保存主表出错

    .net 主从表实例

    在.NET框架中,开发数据库应用时经常会遇到主从表(Master-Child)的概念。主从表是一种一对多的关系,例如,一个订单(主表)可以包含多个订单详情(子表)。在这个实例中,我们将探讨如何使用C#和.NET来实现主从表...

    FastReport for.Net开发指南-主从表_Master Detail_报表设计详解

    ### FastReport for .Net 主从表(Master/Detail)报表设计详解 FastReport for .Net 是一款功能强大的报表设计工具,适用于.NET平台上的各种应用程序,包括但不限于Windows Forms、ASP.NET和WPF应用。主从表...

    使用DataGridView控件实现主从表

    在数据库设计中,主从表(也称为父子表或一对多关系)用于表示两个表之间的关系,其中一个表(主表)有一条记录对应多个记录在另一个表(从表)中。例如,一个员工表(主表)可能包含多个项目表(从表),每个员工...

    Delphi主从表自创实例

    在Delphi编程环境中,主从表(Master-Detail)是一种常见的数据展示方式,它用于处理一对多的关系,例如一个订单可以包含多个商品项。在这个"Delphi主从表自创实例"中,我们将深入探讨如何在Delphi中实现这种关系,...

    Repeater 实现主从表浏览

    本项目“Repeater实现主从表浏览”利用Visual Studio 2008(VS2008)和Northwind数据库,为我们展示了一个如何在ASP.NET环境中通过Repeater控件来呈现这种关系的实例。下面将详细讲解这个知识点。 **Repeater控件**...

    嵌套 Repeater 实现主从表浏览(MVC)

    在.NET MVC框架中,开发一个主从表浏览的界面是一个常见的需求,这通常涉及到数据的层级展示和交互。本项目“嵌套Repeater实现主从表浏览(MVC)”利用Visual Studio 2008和Northwind数据库,提供了一个有效的解决...

    cxGrid主从表从表二次新增记录不显示

    在这个特定的问题中,用户遇到了一个常见但棘手的异常情况:在主从表中,当尝试对已有主表记录进行从表的二次新增记录时,新添加的记录不会立即显示,只有在刷新界面后才会出现。 这个问题可能是由以下几个原因导致...

    利用delphi中的内存表来制作主从表

    利用TClientDataSet制作主从表是数据库应用设计中的常见方法,可以有效地管理和展示关联数据,类似于Access或SQL Server中的关系模型。下面我们将详细介绍如何使用Delphi的内存表来实现这一功能。 首先,了解主从表...

    DELPHI 主从表控制

    在这个场景中,"DELPHI 主从表控制"的讨论主要聚焦于如何在三层架构中设置和管理主从表。 首先,我们来详细理解主从表的概念。主表(Master Table)通常包含唯一标识符,而从表(Detail Table)通过这个标识符与主...

    vs2012.net 主从表微软标准示例

    vs2012.net 主从表微软标准示例 初学c#,在网上搜了半天主从表的知识,结果看到微软正宗的主从表示例,仅需一个类就完成了,感受到了.net的强大。窗体、控件全部动态生成。适合初学者看看。 内附Northwind 数据库...

    C#中DataGridView主从表例子

    在实现主从表关联时,我们通常会有一个主表(如客户表)和一个或多个从表(如订单表)。主表的数据会在`DataGridView`的一个面板中显示,而从表的数据则在另一个嵌套的`DataGridView`中显示,这通常通过`...

    导出cxGrid主从表记录

    在本例中,我们将深入探讨如何从cxGrid组件中导出主从表记录,并获取从表的记录数。 首先,cxGrid的主表通常用于展示主要数据,而从表则用于显示与主表记录相关联的详细信息。在导出这些数据时,我们需要确保两部分...

    GridView无刷新主从表联动

    在ASP.NET开发中,"GridView无刷新主从表联动"是一种常见的数据展示方式,它能够提升用户体验,使得用户在查看和操作数据时无需等待页面完全刷新。这种技术通常用于显示两个相关联的数据表,其中一个是主表,另一个...

    DevExpress中GridControl 主从表如何实现

    在DevExpress的.NET开发工具集中,GridControl是一款强大的数据呈现控件,它提供了丰富的功能和高度定制性,使得在Windows Forms应用程序中实现主从表关系变得简单。主从表(Master-Detail)是一种常见的数据展示...

    devexpress主从表实现

    在.NET开发环境中,DevExpress是一款强大的UI控件集,它提供了丰富的功能来构建高效、美观的桌面和Web应用程序。本主题将深入探讨如何使用DevExpress控件实现主从表(Master-Detail)关系,这是一种常见的数据展示...

    silverlight使用主从表信息显示datagrid

    在数据库设计中,主从表(也称为一对多关系)是一种常见的关系模型,其中一张表(主表)可以有多条记录与另一张表(从表)的一条记录相对应。例如,一个顾客(主表)可以有多个订单(从表)。 在Silverlight中,...

    简单学习主从表

    在IT领域,主从表(Master-Slave Table)是一种常见的数据库设计模式,特别是在处理大量数据和并发操作时。这种模式主要用于分摊读写压力,提高数据查询效率,以及实现数据冗余和备份。在本案例中,我们将通过Visual...

    用ASP.NET在同一网页中显示主从关系表的相关数据

    ### 用ASP.NET在同一网页中显示主从关系表的相关数据 #### 方法概述 在ASP.NET中,为了实现在同一网页上直观地展示具有主从关系的数据表,可以通过一系列的编程技巧来达到目的。这种方法主要是利用ASP.NET提供的...

    主从表关联问题

    一、使用视图meeting将多表关联整合在一起 二、通过Sql语句筛选数据 三、建立和主从表的关联 四、注意在CrystalReport1表中插入子报表的时候,一定要将主从表的关联字段设置好,否则出乱子

Global site tag (gtag.js) - Google Analytics