CSFrameworkV6-数据下钻功能,双击表格打开单据(表单穿透、表单跳转)
应用场景
如生产单功能,每张生产单需要查看生产环节的单据流程状态,双击表格记录要打开对应的单据(下钻数据),如:采购订单、采购入库单等。
逻辑分析
生产单功能属于生产模块,标签页中各个流程单据可能在不同的模块,因此打开单据存在两种情况:
- 打开跨模块(dll)的业务单据窗体
- 打开当前模块的业务单据窗体
解决方案
在业务单据窗体的 InitializeForm 方法 内判断逻辑,若传入单据号码,自动给查询条件中的单据号码赋值,然后自动点击【查询】按钮,再点击【查看】按钮,完成自动化操作显示当前单据。
1、修改业务单据窗体的 InitializeForm 方法 处理传入单据号码逻辑
如上图所示的采购订单,首先我们需要修改采购订单的 InitializeForm 方法:
C# 全选
//传入单据号码
if (_CurrentParameter != null && _CurrentParameter is String docNo)
{
txt_PONO.EditValue = docNo;//设置查询条件
btnQuery_Click(btnQuery, new EventArgs());//调用查询按钮事件
if (gvSummary.RowCount > 0) this.DoViewContent(null);//查看当前单据
}
else
{
txt_DateFrom.EditValue = DateTime.Now.AddDays(-30);
txt_DateTo.EditValue = DateTime.Now;
btnQuery_Click(btnQuery, new EventArgs());
}
2、跨模块打开单据并定位单据号码
采购单表格双击事件
C# 全选
private void gvDetail_PO_DoubleClick(object sender, EventArgs e)
{
var row = gvDetail_PO.GetRow<res_PFSummary_POs>();//当前记录
if (row != null)
{
//跨模块打开窗体,并显示指定单据
(MdiTools.MainForm as IMdiForm).OpenModuleForm("CartonERP.PurchaseModule.frm_PO_Paper", "menuPurchase_PO", row.PONO);
}
}
OpenModuleForm方法
开发框架提供OpenModuleForm方法,用于跨模块(dll类库)打开窗体。
每个业务模块主窗体提供 OpenForm方法,参考:frmbaseModule.cs 文件。
3、打开当前模块的单据窗体并定位单据
采购单表格双击事件
C# 全选
//生产领料
private void gvDetail_MO_Click(object sender, EventArgs e)
{
var row = gvDetail_PO.GetRow<res_PFSummary_MOs>();//当前记录
if (row != null)
{
//打开当前模块的窗体,并显示指定单据
MdiTools.OpenChildForm(this.MdiParent as IMdiForm, typeof(frm_WF), row.IONO);
}
}
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网