C# C/S架构下客户、供应商等大批量数据单条记录选取组件
作者:C/S框架网  发布日期:2012-05-27 11:56:19
  C# C/S架构下客户、供应商等大批量数据单条记录选取组件


开发框架内把客户、供应商资料作为基础资料(数据字典)使用,在采购订单、销售订单、送货单等业务单据窗体中关联客户或供应商编号,并提供一种便捷的功能给用户输入或选择。

通常有两种做法:

一种是用LookupEdit下拉窗体作为参考数据给用户过滤选择。

第二种方式是使用ButtonEdit组件给用户输入编号或点击按钮打开筛选窗体进行查询,然后选择一条数据并返回结果。

优劣比较:

第一种方式适合部署在局域网内的小型系统,条件是客户、供应商资料比较少的情况下,实现很简单,开发框架V2.2使用这种处理方式,请参考frmSO窗体。

第二种方式适合使用Web服务的C/S系统,因Web服务不适合加载大批量数据,不能使用LookupEdit组件显示全部客户资料,折衷的方式是使用ButtonEdit组件,用户即可输入客户编码又能打开窗体选择。

ButtonEdit仅用于输入或显示客户编号,因此需要拖放一个TextEdit组件配合显示客户名称。客户名称设只读属性,
通过客户编号从后台取到名称并显示。

实现思路:

1. 输入编号处理。用户输入编号按回车或离开焦点时从后台取到名称并显示,通过Validating事件可以处理。

参考:ucDT_CustomerEditor.cs文件中ucDT_CustomerEditor_Validating事件。

2. 点击按钮打开筛选窗体。筛选窗体提供模糊查询功能,用户在查询结果中选择一条记录,按确定按钮返回结果。
在调用筛选窗体时传入一个回调函数(Callback),接收DataRow参数,定义如下:

C# Code:

/// <summary>
/// 回调函数,当选择一个条记录后关闭窗体时调用
/// </summary>
/// <param name="resultRow">当前选择的条记</param>
public delegate void SearchCallBack(DataRow resultRow);




3. 返回资料。 返回一条DataRow资料,取CustomerCode,CustomerName字段的值分别给编号和名称组件赋值。

4. 查看状态下显示客户名称。用户点查看按钮,后台使用左连接LEFT JOIN 从客户表关联出客户名称。

5. 在[数据查询]TabPage页面的表格中显示名称,同样是通过左连接LEFT JOIN 从客户表关联出客户名称。

贴图图片


V3.0版本使用ucDT_CustomerEditor组件,参考:frmSO,frmPO等窗体。


上一篇 下一篇