C# C/S架构明细表产品资料输入及单条记录选取方案
作者:C/S框架网  发布日期:2012-05-27 14:24:48
  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。


C# Code:

(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();
}


 

参考:frmSO,frmPO等窗体。




上一篇 下一篇