新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架


新增基础资料单表窗体 - MiniFramework蝇量框架 - Winform框架-开发框架文库

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

总体开发思路大致与单表相同,主从表窗体多了一个明细表。注意:本文已省略基础界面开发。

单表窗体开发指南:https://www.cscode.net/archive/miniframework/255527961665541.html

 

 

一、添加Windows窗体,继承 frmBaseData

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

二、添加按钮组件(ucButtonFunction)

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

三、添加 XtraTableContaol组件 

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

添加2个TabPage标签页,分别改名【数据查询】、【编辑详情】,已经设置标签页的小图标。

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

四、【数据查询】添加查询条件、主表表格

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

  添加查询条件相关组件。首先添加一个 PanelControl 组件作为查询条件的容器。

然后添加相关查询条件组件,如:LabelControl、TextEdit、DateEdit,以及2个按钮 SimpleButton,分别是【查询】与【清空】按钮。

五、【编辑详情】添加主表当前记录详情、明细表

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

  添加一个 PanelControl 组件作为主表详情区域容器。然后添加每个字段对应的输入组件,本文使用的组件有: TextEdit、DateEdit、ButtonEdit、LookupEdit 等。

注意:编辑详情页输入组件命名规范:txt+字段名,如:txtPONO,txtSupplierCode ,

而查询条件输入组件命名规范:txt_+字段名,txt下划线,如:txt_PONO,txt_SupplierCode 

 

  添加一个 GridControl 组件作为明细表表格

 

六、新增 Model、DAL、BLL 源码

分别对应3个子目录:

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

新增Model

在 Models 子目录下新增一个2个cs文件,分别为 tb_PO.cs 、tb_POs.cs 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

MiniFramework没有代码生成器,建议从其他.cs文件复制过来改名。

 

新增DAL

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

新增BLL

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

七、实现【查询】按钮事件

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

C# 全选
 //查询按钮事件
        private void btnQuery_Click(object sender, EventArgs e)
        {
            try
            {
                frmWaitingEx.ShowMe(this);

                //查询条件
                var input = new QueryPO
                {
                    docNo1 = txt_DocNoFrom.EditValue.ToStringEx(),
                    docNo2 = txt_DocNoTo.EditValue.ToStringEx(),
                    docDate1 = Globals.GetMinSQLDate(txt_DocDateFrom.DateTime),
                    docDate2 = Globals.GetMinSQLDate(txt_DocDateTo.DateTime),
                    stockCode = txt_StockCode.EditValue.ToStringEx(),
                    supplierInfo = txt_SupplierInfo.Text.Trim(),
                    createUser = txt_CreatedBy.EditValue.ToStringEx()
                };

                var dt = _BLL.Query(input); 
                gcSummary.DataSource = dt;
                ucOperate.DoSetViewMode();
            }
            finally
            {
                frmWaitingEx.HideMe(this);
            }
        }

 

八、实现功能按钮事件

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

frmPurchaseOrder.cs 实现的按钮事件:

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

参考:ucOperate_OnAdd 方法【新增】按钮事件

C# 全选
        /// <summary>
        /// 新增按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ucOperate_OnAdd(object sender, UserControls.ButtonEventArgs e)
        {
            var source = _BLL.CreateDataBinder(null);
            source.Rows[0][tb_PO.FlagApp] = "N";//默认赋值
            source.Rows[0][tb_PO.PONO] = "*自动生成*";
            source.Rows[0][tb_PO.PODate] = DateTime.Today;
            source.Rows[0][tb_PO.CreatedBy] = Loginer.Current.UserId;
            source.Rows[0][tb_PO.CreationDate] = DateTime.Now;

            //绑定主表当前记录的数据源(所有文本输入框)
            DataBinder.BindingEditorPanel(gcDetailEditor, source);

            //绑定明细表的数据源
            this.LoadDetail("-");

            this.ShowDetailPage(true);
            _UpdateType = UpdateType.Add;
            e.IsDone = true;
        }

 

参考文章:ucButtonFunction 组件详解

https://www.cscode.net/archive/miniframework/256700773441541.html

 

关于 DataBinder 类 - 绑定下拉选择组件数据源

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

参考以下例子,实现自己的方法。

C# 全选
        /// <summary>
        /// 绑定下拉组件(LookupEdit)数据源
        /// </summary>
        /// <param name="lue"></param>
        internal static void BoundCurrency(RepositoryItemLookUpEdit lue)
        {
            lue.NullText = "";
            lue.DropDownRows = 15;
            InitializeControl(lue, new string[] { "货币类型" }, new string[] { tb_Currency.CurrencyName });
            DataBinder.BindingLookupEditDataSource(lue, DataDictCache.Cache.Currency, tb_Currency.CurrencyName, tb_Currency.Currency);
        }

扩展功能 - DataDictCache 类

DataDictCache - 全局缓存设计逻辑详解

参考:DataDictCache - 全局缓存设计逻辑详解

https://www.cscode.net/archive/newdoc/cs-210903193535642-42.html

 

扩展功能 - 使用 ButtonEdit 组件实现弹窗选择供应商

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

 

扩展功能 - 使用 RepositoryItemButtonEdit 组件实现弹窗选择产品资料

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

扩展功能 - 明细表表格实现【增加】、【插入】、【删除】功能

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

 

扩展功能 - 明细表自动计算功能

 

新增业务单据主从表窗体 - MiniFramework蝇量框架 - Winform框架

若上图所示,【金额】列是不可输入的,输入【单价】或【数量】自动计算。

 开发步骤:

给明细表表格 gvDetail 绑定 CellValueChanged 事件

C# 全选
gvDetail.CellValueChanged += GvDetail_CellValueChanged;

 

C# 全选
private void GvDetail_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            //用户修改了单价、数量列
            if ((e.Column == colD_Price) || (e.Column == colD_Quantity))
            {
                decimal price = ConvertEx.ToDecimal(gvDetail.GetDataRow(gvDetail.FocusedRowHandle)[tb_POs.Price]);//单价
                decimal quantity = ConvertEx.ToDecimal(gvDetail.GetDataRow(gvDetail.FocusedRowHandle)[tb_POs.Quantity]);//数量
                decimal amt = Math.Round(price * quantity, 2, MidpointRounding.AwayFromZero);//金额=数量*单价

                gvDetail.SetFocusedRowCellValue(colD_Amount, amt);

                gvDetail.UpdateCurrentRow();//更新当前资料行
                gvDetail.UpdateTotalSummary();//更新合计

                //更新主表的合计金额,取明细表合计(SUM)
                decimal totalAmt = ConvertEx.ToDecimal(colD_Amount.SummaryItem.SummaryValue);
                this.SetEditorBindingValue(txtAmount, totalAmt, true);
            }
        }

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
评论列表

发表评论

评论内容
昵称:
关联文章

新增业务单据主从 - MiniFramework框架 - Winform框架
开发业务单据报表(主从) - MiniFramework框架 - Winform框架
新增基础资料单 - MiniFramework框架 - Winform框架
新增业务模块 - MiniFramework框架 - Winform框架
体系架构 / 逻辑架构 - MiniFramework框架 - Winform框架
软件主主界面设计 - MiniFramework框架 - Winform框架
开发数据查询 - MiniFramework框架 - Winform框架
工具栏按钮(Toolbar)介绍 - MiniFramework框架 - Winform框架
模块容器(frmModuleContainer)介绍 - MiniFramework框架 - Winform框架
模块主添加功能按钮 - MiniFramework框架 - Winform框架
新增主从业务单据 | C/S架构软件开发平台 - 旗舰版V6.0
导航菜单NavbarControl 介绍 - MiniFramework框架 - Winform框架
登录界面设计 - MiniFramework框架 - Winform框架
《CS框架V2.2-3.0业务单据_主从_快速开发指南》
系统参数配置 - MiniFramework框架 - Winform框架
MiniFramework框架 Visual Studio解决方案
关于我们 - MiniFramework框架 - Winform框架
丰富的模板、开发实例 - MiniFramework - 量级开发框架
状态栏(StatusBar)介绍 - MiniFramework框架 - Winform框架
ucButtonFunction 组件详解-MiniFramework框架-Winform框架