业务单据窗体开发步骤|开发教程
目录1.1.1 新建业务窗体在【销售模块】新建【frmSO】窗体。 在【销售模块】点右键,【添加】à【新建项】à打开【新建项对话框】。 【添加新项】对话框 在【名称】输入框输入【frmSO】,点【添加】按钮弹出【继承选择器】窗体。 如找不到frmBaseBusinessForm基类窗体,请点击【浏览】按钮,在debug目录内选择CSFrameworkV5.Library.dll文件,点【确定】加载类库。 选择【frmBaseBusinessForm】组件名称,点【确定】按钮。1.1.2 界面布局设计【数据查询页】:用于展示查询结果的数据,表格只读,不可修改。 【数据编辑页】:用于展示详细资料,用户在【数据编辑页】可以修改数据。1.1.3 数据查询页设计设计查询条件; 从工具箱拖放PanelControl组件,Dock设为Top,在PanelControl内拖放一组查询条件输入框及查询按钮;1.1.4 设计主表表格从工具箱拖放PanelControl组件,Dock设为Client; 在PanelControl内拖放一个GridControl组件,然后改名,如下图: GridControl可以从其它窗体复制过来,节省开发时间。 在GridView(gvSummary)内定义表格的列。 表格的列设计页面 新增一个列 列的属性设置。主要修改(Name),Caption,FieldName三个属性。
1.1.5 数据编辑页面设计(主/从表输入区域)一般情况下业务单据只有一个明细表,设计效果如下: 有的业务单据比较复杂,【收回委托加工单】有3个明细表,其中两个明细表用TabPage整合到一起,参考设计: 1.1.6 主表输入组件设计输入框(文本框)必须以txt+字段名命名,如:SONO 销售订单编号的文本框命名为txtSONO, CheckBox用缩写chk,如:chkFlagAPP审核。 1.1.7 使用代码生成器工具生成ORM、BLL、DAL代码代码生成器可生成Model、DAL和BLL层的代码,业务单据窗体开放比较复杂,除框架实现的功能以外还需要扩展少量方法,如:【销售单据】扩展的方法有CheckNoExists,GetSummaryByParam,GetReportData等方法。 跟据业务需求进行二次开发,或者修改代码生成器生成模板代码,增强功能,提高效率。 视频下载:http://www.csframework.com/cs-code-generator.htm 1.1.8 BLL继承关系图bllBase是所有业务层的基类,bllBaseBusiness是【业务单据】的业务逻辑层基类,所有【业务单据】的业务逻辑层从bllBaseBusiness派生,如bllPO,bllSO。1.1.9 bllBaseBusiness类bllBaseBusiness类是业务单据的业务逻辑层基类,实现了业务单据所需的公共方法。该类中定义的虚方法便于派生类重写。 bllBaseBusiness类说明:
1.1.10bllSO类
类成员截图: 1.1.11 DAL继承关系图上图所示,dalBase是数据访问层的基类,dalBaseBusiness是【业务单据】数据层的基类,业务单据的DAL从dalBaseBusiness类继承,如dalPO,dalSO。1.1.12 dalBaseBusiness类
1.1.13 dalSO类
1.1.14 编写窗体的代码完成界面布局设计,使用【代码生成器】工具生成ORM,BLL,DAL层的代码,针对需求调整代码二次开发。开发框架提供两种数据窗体模板,为了提高开放效率,可以复制frmSO或frmPO窗体中相关代码。 窗体与业务逻辑层的引用关系: 作为标准三层开发框架,用户界面与业务逻辑代码相互分离,业务逻辑相关数据处理的代码建议封装到业务层,这样减少用户界面的代码量,降低界面与业务层代码藕合程度。 1.1.14.1 初始化业务窗体(重写InitializeForm方法)InitializeForm方法是frmBaseDataForm窗体中定义的虚方法,派生窗体必须在Form.Load事件中调用。 InitializeForm方法主要功能:1)实例化业务层_BLL变量。 2)调用公共方法设置表格样式。 3)绑定主表表格及明细表表格的事件。 4)绑定数据参照组件(LookupEdit)的数据源。 5)加载一个空的业务对象,用于测试网络环境及初始化数据。 请参考frmSO. InitializeForm方法 1.1.14.2 Form.Load事件调用InitializeForm方法
1.1.14.3 实现查询功能实现查询功能的目的是显示主表的数据,参考frmPO.cs的btnQuery_Click时间,调用BLL层的Query方法,该方法的参数跟据查询条件定义逐个对应,常用的查询条件有【单据号码】,【日期范围】等。 流程如下:请参考frmPO. btnQuery_Click事件以及BLL,DAL层的实现思路。 1.1.14.4 绑定主表输入组件数据源(DoBindingSummaryEditor方法)在【数据编辑】页面,主表的资料用文本框展示,重写DoBindingSummaryEditor方法自动绑定文本框的数据源。 请参考frmPO. DoBindingSummaryEditor方法 1.1.14.5绑定明细表格的数据源(DoBindingDetailGrid方法) 重写DoBindingDetailGrid方法绑定销售订单明细表的数据源。 该方法是frmBaseBusinessForm窗体中定义的虚方法。 请参考frmPO. DoBindingDetailGrid方法 1.1.14.6 增加(DoAdd方法)【销售订单】不需要实现DoAdd方法,在frmBaseBusinessForm窗体该方法调用业务层的虚方法,在派生类bllSO中重写相关方法就行。 【销售订单】的新增功能处理流程:1)调用业务层的GetDataByKey方法,下载一个空的业务单据DataSet。 2)调用业务层的NewBusiness方法,新增一条记录并初始化数据,如【单据日期】, 【制单人】等预设值。 3)绑定主表,明细表的数据源。 4)将状态改为UpdateType.Add。 5)显示详细资料页面。 请参考frmBaseBusinessForm. DoBindingDetailGrid方法及bllSO.GetDataByKey, NewBusiness 1.1.14.7 删除(DoDelete方法)【销售订单】不需要实现DoDelete方法,在frmBaseBusinessForm窗体中该方法调用业务层的Delete虚方法,在派生类bllSO中重写Delete方法就行。 【销售订单】删除功能处理流程:1)调用BLL的IsApproved方法检查单据是否已经审核,已审核的单据禁止删除。 2)调用BLL的Delete方法删除【销售订单】的数据。 3)如后台数据删除成功,要同步删除表格中缓存的记录。 请参考frmBaseBusinessForm. DoDelete方法及bllSO.IsApproved,Delete 1.1.14.8 修改(DoEdit方法)【销售订单】不需要实现DoEdit方法,在frmBaseBusinessForm窗体中已经完成该方法的所有功能,调用BLL.GetDataByKey方法获取数据。 【销售订单】的修改功能处理流程:1)调用BLL的IsOwnerChange方法检查制单人,不能修改他人创建的单据。 2)调用BLL的IsApproved方法检查单据是否已经审核,已审核的单据禁止修改。 3)调用DoViewContent方法显示当前单据的详细资料。 4)将状态改为UpdateType.Modify。 5)显示详细资料页面。 请参考frmBaseBusinessForm. DoEdit方法及bllSO.IsApproved, IsOwnerChange 1.1.14.9 查看(DoViewContent方法)【销售订单】不需要实现DoViewContent方法,在frmBaseBusinessForm窗体中该方法调用业务层的GetDataByKey虚方法,在派生类bllSO重写GetDataByKey方法就行。 【销售订单】的查看功能处理流程:1)调用业务层的GetDataByKey方法下载业务单据的数,返回DataSet。 2)绑定主表及明细表的数据源。 3)将状态改为UpdateType.None。 4)显示详细资料页面。 请参考frmBaseBusinessForm. DoViewContent方法及bllSO. GetDataByKey 1.1.14.10 取消(DoCancel方法)【销售订单】不需要实现DoCancel方法,在frmBaseBusinessForm窗体中已实现具体功能。 【销售订单】的取消功能处理流程:1)调用DoViewContent方法重新显示当前单据。 2)将状态改为UpdateType.None。 请参考frmBaseBusinessForm. DoCancel方法1.1.14.11 打印(DoPrint方法)打开打印预览窗体。 请参考frmSO. DoPrint方法1.1.14.12 审核(DoApproval方法)【销售订单】不需要实现DoApproval方法,在frmBaseBusinessForm窗体中该方法调用业务层的虚方法,在业务层bllSO重写ApprovalBusiness方法就行。 【销售订单】的审核功能处理流程:a)调用BLL的IsApproved方法检查单据是否已经审核,已审核的单据不能重复审核。 b)调用BLL的ApprovalBusiness方法审核单据。 请参考frmBaseBusinessForm. DoApproval方法及bllSO. ApprovalBusiness1.1.14.13 保存(DoSave方法)【销售订单】保存功能流程:1)更新最后获得焦点输入框的数据及主表的汇总金额。 2)检查主从表的数据合法性。 3)保存本次修改日志记录。 4)数据采集:创建用于保存的临时数据。bllBaseBusiness类的_CurrentBusiness变量存储当前正在处理的业务数据,在保存前要做特殊处理,如设置【最后修改人】、【修改日期】或其他关联数据,为了不影响原始数据,复制一个副本用于保存,若保存失败也不影响当前正在处理的业务数据。 5)调用BLL.Save方法。 6)如保存成功,前台相关处理。 7)将状态改为UpdateType.None。 请参考frmSO. DoSave方法及bllSO. Save 1.1.14.14 主表数据合法性检查(ValidatingSummaryData方法)请参考frmSO. ValidatingSummaryData方法 1.1.14.15 明细表数据合法性检查(ValidatingDetailData方法)请参考frmSO. ValidatingDetailData方法1.1.14.16 显示修改历史记录(DoShowModifyHistory方法)打开frmModifyLog窗体显示修改历史记录。 请参考frmSO. DoShowModifyHistory方法1.1.14.17 其它细节处理
1.1.15 相关文章及视频参考视频下载:http://www.csframework.com/cs-code-generator.htm1.1.16 几个标准模板窗体参考开发框架内提供了几个标准数据模板窗体:1)【数据字典】窗体请参考《客户管理》和《产品管理》 2)【业务单据】窗体请参考【采购模块】的《采购订单》及【销售模块】的《销售订单》
扫一扫加作者微信
参考文档:
什么是业务单据?什么是业务数据?什么是业务窗体? 《CS框架V2.2-3.0业务单据窗体_主从表_快速开发指南》 指定单据号码自动打开业务单据窗体并显示数据 开发平台最新版生成器V4.5,生成业务窗体界面效果图 开发技巧-Winform窗体自动生成下一个业务流程的单据|C/S框架网 C/S开发框架新功能:批量更新业务单据的业务员、制单人制表人 CSFramework.WebApi新手入门实战开发教程(C#+VS2017) 独立数据编辑窗体(单表)实例开发教程-CSFrameworkV5.1旗舰版 CSFramework旗舰版V5.1 - 单表独立数据编辑窗体实例开发教程-C/S开发框架 数据字典窗开发步骤|开发教程 数据字典窗体BLL、DAL继承关系图|开发教程 数据字典窗体bllBaseDataDict类详解|开发教程 数据字典窗体编写窗体的代码|开发教程 业务单据窗体开发实例|销售订单的表结构设计|开发教程 业务单据窗体基类介绍|开发教程
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |