private void SaveClick_Click_Extend(object sender, EventArgs e)
        {
            ReturnUpDownLineDtoData l = CurrentState["DTO"] as ReturnUpDownLineDtoData;

            //调用模版提供的默认实现.--默认实现可能会调用相应的Action
            foreach (OrderBomHeadRecord item in this.Model.OrderBomHead.Records)
            {
                if (item.DataRecordState == DataRowState.Deleted)
                {
                    if (item.SubkeyType_Code != "03")
                    {
                        throw new Exception("当前删除的料号[" + item.ParentPart_Code + "]非包材类型子项,不可删除!");
                    }
                }
                if (item.DataRecordState == DataRowState.Added)
                {
                    if (item.SubkeyType_Code != "03")
                    {
                        throw new Exception("当前新增的料号[" + item.ParentPart_Code + "]非包材类型子项,不可新增!");
                    }
                }
                if (item.SubKey == null)
                {
                    throw new Exception("子项不可为空!");
                }
                item.OrderLine    = l.SoLineID;
                item.OrderHead    = l.SoID;
                item.OrderLineRow = l.RowNo;//行号
            }

            //  this.CloseDialog(false);
            SaveClick_Click_DefaultImpl(sender, e);
        }
        public void BeforeUIModelBinding()
        {
            ReturnUpDownLineDtoData l = CurrentState["DTO"] as ReturnUpDownLineDtoData;

            if (l != null && string.IsNullOrEmpty(StrState))//StrState
            {
                if (l.SoLineID != 0)
                {
                    LoadData(l.SoLineID + "", l.RowNo + "", l.ItemInfo_ItemID + "", l.ItemInfo_ItemName, l.Qty, l.Uom, l.Precision_Qty);
                }
            }
        }
        /// <summary>
        /// 清除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnClear_Click_Extend(object sender, EventArgs e)
        {
            ReturnUpDownLineDtoData l = CurrentState["DTO"] as ReturnUpDownLineDtoData;
            //调用模版提供的默认实现.--默认实现可能会调用相应的Action.

            List <long> ls = new List <long>();

            ls.Add(l.SoLineID);//销售订单行 id
            DeleteSoLineBomProxy Proxy = new DeleteSoLineBomProxy();

            Proxy.SoLineListKey = ls;
            Proxy.Do();

            btnClear_Click_DefaultImpl(sender, e);
        }
        /// <summary>
        /// 取消包材确认
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnUnPacking_Click_Extend(object sender, EventArgs e)
        {
            ReturnUpDownLineDtoData l = CurrentState["DTO"] as ReturnUpDownLineDtoData;

            if (!string.IsNullOrEmpty(l.SoLineID + ""))
            {
                ModifyBomSateProxy proxy = new ModifyBomSateProxy();
                proxy.Type = 0;//取消
                List <long> ls = new List <long>();
                ls.Add(l.SoLineID);
                proxy.SoLineListKey = ls;
                proxy.Do();
            }
            BtnUnPacking_Click_DefaultImpl(sender, e);
        }
        /// <summary>
        /// 读取BOM
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReadBom_Click_Extend(object sender, EventArgs e)
        {
            btnClear_Click_Extend(sender, e);//先清除
            ReturnUpDownLineDtoData l = CurrentState["DTO"] as ReturnUpDownLineDtoData;

            //调用模版提供的默认实现.--默认实现可能会调用相应的Action.
            if (!string.IsNullOrEmpty(l.SoLineID + ""))
            {
                List <long> ls = new List <long>();
                ls.Add(l.SoLineID);
                GetBomMasterProxy proxy = new GetBomMasterProxy();
                proxy.SOLineKeyID = ls;
                proxy.Do();
            }
            btnReadBom_Click_DefaultImpl(sender, e);
        }
        /// <summary>
        /// 下一行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnNextLine_Click_Extend(object sender, EventArgs e)
        {
            ReturnUpDownLineDtoData l = CurrentState["DTO"] as ReturnUpDownLineDtoData;

            //调用模版提供的默认实现.--默认实现可能会调用相应的Action.
            if (l != null)
            {
                UpDownLineBomProxy proxy = new UpDownLineBomProxy();
                proxy.SoID        = l.SoID;
                proxy.SoLineRowNo = l.RowNo;
                proxy.Type        = 0;//下一行
                SoBomBP.ReturnUpDownLineDtoData dto = proxy.Do();
                if (dto != null)
                {
                    CurrentState["DTO"] = dto;
                    StrState            = "Next";
                    LoadData(dto.SoLineID.ToString(), dto.RowNo.ToString(), dto.ItemInfo_ItemID, dto.ItemInfo_ItemName, dto.Qty, dto.Uom, dto.Precision_Qty);
                }
            }
            btnNextLine_Click_DefaultImpl(sender, e);
        }