明细表使用ButtonEdit选择商品资料并设置商品名称,单价等信息
作者:C/S框架网  发布日期:2012/01/08 17:23:12
  明细表使用ButtonEdit选择商品资料并设置商品名称,单价等信息


如图:

贴图图片



基本思路:

1. 绑定ButtonEdit的Click,Validating事件。

2. 如用户Click,则打开商品查询窗体,当用户选择一个商品并关闭窗体,调用SearchStockCallBack方法设置商品资料相关字段的值。

3. 如用户输入编号,按回车时触发Validating事件,这时系统跟据bllProduct.GetDataByKey()从数据库取商品的资料,如编号正确,调用SearchStockCallBack()方法设置商品资料相关字段的值。

4. 商品名称必须为“Lookup ”  类型,因为业务单据的明细表只与商品编号关联,而商品名称是通过左联接(LEFT JOIN)查询出来的。新增的商品必须调用SearchStockCallBack方法给商品名称赋值,当存储数据后,下次修改时商品名称是LEFT JOIN查询出来的。

5. DAL层取业务单据的资料表(或主从关系的),建议将SQL封装为存储过程,DAL层不要写太多的SQL,将来不好维护。


部分源码:



        private void OnStockCode_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)

        {

            //打开商品查询窗体           

            frmFuzzySearch.Execute(sender as ButtonEdit, new bllProduct(), this.SearchStockCallBack);

        }

 

        //检查商品编号

        private void OnStockCode_Validating(object sender, CancelEventArgs e)

        {

            if (this.IsAddOrEditMode == false) return;

            if (string.IsNullOrEmpty((sender as ButtonEdit).Text)) return;

 

            string stockCode = (sender as ButtonEdit).Text.Trim();

            DataTable dt = new bllProduct().GetDataByKey(stockCode); //验证产品编号是否正确

            if (dt.Rows.Count > 0)

                this.SearchStockCallBack(dt.Rows[0]);

            else

            {

                e.Cancel = true;

                Msg.Warning("产品编号不存在!");

            }

        }

 

        private void SearchStockCallBack(DataRow resultRow)

        {

            if (resultRow == null) return;

 

            //给表格的字段赋值

            int H = gvDetail.FocusedRowHandle;

            gvDetail.SetRowCellValue(H, colD_ProductID, ConvertEx.ToString(resultRow[tb_Product.ProductID]));

            gvDetail.SetRowCellValue(H, colD_ProductName, ConvertEx.ToString(resultRow[tb_Product.ProductName]));

            gvDetail.SetRowCellValue(H, colD_AssyNumber, 1);

            gvDetail.UpdateCurrentRow();

        }

 




模板窗体:

参考开发框架销售订单(SO)的明细表处理机制。
上一篇 下一篇