C# C/S架构明细表产品资料输入及单条记录选取方案
C# C/S架构明细表产品资料输入及单条记录选取方案
如采购订单、销售订单、库存调整、出入库等功能的明细表货品资料栏位,为了提供便捷的操作及丰富的体验,理想的做法是即可输入货品编号又能提供灵活的选择功能。下图是开发框架提供的货品编码输入解决方案:
货品编码:该栏位集成ButtonEdit组件特性,在GridColumn.CustomEdit指定RepositoryItemButtonEdit类型。这样即可输入编码又能打开选择窗体选择货品。
货品名称:使用左连接LEFT JOIN 从货品表关联查询出来。
功能实现
1. 明细表的数据源从视图(View)获取,比如采购订单明细表是tb_POs对应的视图是vw_POs,视图的主要功能是使用左连接关联出货品的信息,比如货品名称、单位等在表格内只读显示(背景色为浅灰色)。
2. ButtonEdit绑定两个处理事件。ButtonClick是ButtonEdit的Click事件,点击按钮打开frmFuzzySearch窗体,并传入一个回调函数(Callback),当用户选择一条货品资料,按确定按钮会调用这个事件,回调函数的功能是给货品资料相关的栏位赋值。Validating事件是检查用户输入的编码是否存在,跟据编码从后台查询货品并返回DataRow对象,如果编码存在DataRow不为空,否则提示用户“编码不存在!”,另一个功能是设置货品资料相关栏位的值,与回调函数调用的是同一个方法:SearchStockCallBack。
扫一扫加微信
如采购订单、销售订单、库存调整、出入库等功能的明细表货品资料栏位,为了提供便捷的操作及丰富的体验,理想的做法是即可输入货品编号又能提供灵活的选择功能。下图是开发框架提供的货品编码输入解决方案:
货品编码:该栏位集成ButtonEdit组件特性,在GridColumn.CustomEdit指定RepositoryItemButtonEdit类型。这样即可输入编码又能打开选择窗体选择货品。
货品名称:使用左连接LEFT JOIN 从货品表关联查询出来。
功能实现
1. 明细表的数据源从视图(View)获取,比如采购订单明细表是tb_POs对应的视图是vw_POs,视图的主要功能是使用左连接关联出货品的信息,比如货品名称、单位等在表格内只读显示(背景色为浅灰色)。
2. ButtonEdit绑定两个处理事件。ButtonClick是ButtonEdit的Click事件,点击按钮打开frmFuzzySearch窗体,并传入一个回调函数(Callback),当用户选择一条货品资料,按确定按钮会调用这个事件,回调函数的功能是给货品资料相关的栏位赋值。Validating事件是检查用户输入的编码是否存在,跟据编码从后台查询货品并返回DataRow对象,如果编码存在DataRow不为空,否则提示用户“编码不存在!”,另一个功能是设置货品资料相关栏位的值,与回调函数调用的是同一个方法:SearchStockCallBack。
C# Code:
(colD_ProductCode.ColumnEdit as RepositoryItemButtonEdit).ButtonClick = new ButtonPressedEventHandler(OnStockCode_ButtonClick);
(colD_ProductCode.ColumnEdit as RepositoryItemButtonEdit).Validating = new CancelEventHandler(OnStockCode_Validating);
(colD_ProductCode.ColumnEdit as RepositoryItemButtonEdit).ButtonClick = new ButtonPressedEventHandler(OnStockCode_ButtonClick);
(colD_ProductCode.ColumnEdit as RepositoryItemButtonEdit).Validating = new CancelEventHandler(OnStockCode_Validating);
C# Code:
/// <summary>
/// 选择货品资料,设置当前货品相关栏位的资料
/// </summary>
private void SearchStockCallBack(DataRow resultRow)
{
if (resultRow == null) return;
int H = gvDetail.FocusedRowHandle;//当前记录号
gvDetail.SetRowCellValue(H, colD_ProductCode, ConvertEx.ToString(resultRow[tb_Product.ProductCode]));//货品编码
gvDetail.SetRowCellValue(H, colD_ProductName, ConvertEx.ToString(resultRow[tb_Product.ProductName]));//货品名称
gvDetail.UpdateCurrentRow();
}
/// <summary>
/// 选择货品资料,设置当前货品相关栏位的资料
/// </summary>
private void SearchStockCallBack(DataRow resultRow)
{
if (resultRow == null) return;
int H = gvDetail.FocusedRowHandle;//当前记录号
gvDetail.SetRowCellValue(H, colD_ProductCode, ConvertEx.ToString(resultRow[tb_Product.ProductCode]));//货品编码
gvDetail.SetRowCellValue(H, colD_ProductName, ConvertEx.ToString(resultRow[tb_Product.ProductName]));//货品名称
gvDetail.UpdateCurrentRow();
}
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网