保存时校验后执行操作

注: 对于保存操作,增删改只能获取到新增的,那是因为查询获取数据到DataTable时漏了dtResult.AcceptChanges();

f201001ae73cd0186a44d8931d51ef847d6.jpg

  private void btnProcess_Click(object sender, EventArgs e)
        {
            //Create
            try
            {
                //保存编辑框中做的更新  //少了这两行,新增保存时总是会丢失最后一条数据
                gdvCOAItem.PostEditor();
                gdvCOAItem.UpdateCurrentRow();
                if (saTableKeys == null)//新建
                {
                    //Update Table
                    if (CheckCondition("Create_COA", GlobalConstant.SYS_STEP_CREATE) == false)
                    {
                        return;
                    }
                    if (QCM_Update_COA(GlobalConstant.SYS_STEP_CREATE) == false)
                    {
                        return;
                    }
                    //添加成功,显示成编辑界面
                    saTableKeys = new string[] { GlobalVariable.gsFactory, this.gluCOATemplate.Text };
                    //this.rpgCreate.Visible = true;
                    //this.rpgLifeCycle.Visible = true;
                    this.Text = CommonFunction.FindLanguage("COA Template", CAPTION_TYPE.MENU) + " - " + this.gluCOATemplate.Text;
                    //if (GlobalVariable.gLoginInfo.bListAutoRefresh == true)
                    //{
                    //    btnRefresh.PerformClick();
                    //}
                }
                else//更新
                {
                    if (CheckCondition("Create_COA", GlobalConstant.SYS_STEP_UPDATE) == false)
                    {
                        return;
                    }
                    if (QCM_Update_COA(GlobalConstant.SYS_STEP_UPDATE) == false)
                    {
                        return;
                    }
                    //if (GlobalVariable.gLoginInfo.bListAutoRefresh == true)
                    //{
                    //    btnRefresh.PerformClick();
                    //}
                }
                //Update Data List
                //int ActiveRow = 0;//更新后继续focus在原先focus的行
                if (CheckCondition("Update_Item_List", GlobalConstant.SYS_STEP_CREATE) == false) //CheckDataCondition不分SYS_STEP_UPDATE还是SYS_STEP_DELETE
                {
                    return;
                }
                if (Update_COA_Detail_Item_List() == false)
                {
                    return;
                }
                //View_COA_Template();
                CommonFunction.ShowMsgBox(CommonFunction.GetMessage(358));
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
            this.Close();
            frmQCMTranPrintCOA frm = new frmQCMTranPrintCOA();
            frm.Show();
        }

CheckCondition:

 private bool CheckCondition(string FuncName, char ProcStep)
        {
            try
            {
                switch (CommonFunction.Trim(FuncName))
                {
                    case "Create_COA":
                        if (gluCOATemplate.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluCOATemplate.Focus();
                            return false;
                        }

                        switch (CommonFunction.ToChar(CommonFunction.Trim(ProcStep)))
                        {
                            case GlobalConstant.SYS_STEP_CREATE:
                            case GlobalConstant.SYS_STEP_UPDATE:
                                break;
                            case GlobalConstant.SYS_STEP_DELETE:
                                return true;
                        }
                        break;
                    case "Update_Item_List":
                        DataTable dt = (DataTable)gdcCOAItem.DataSource;
                        foreach (DataRow dr in dt.Rows)
                        {
                            if (dr.RowState != DataRowState.Deleted)
                            {
                                if (dr["TESTING_RESULT"].ToString().Trim() == "")
                                {
                                    CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                                    return false;
                                }
                            }
                            if (dr.RowState != DataRowState.Deleted)
                            {
                                if (dr["ITEM_SEQ"].ToString().Trim() == "")
                                {
                                    CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                                    return false;
                                }
                            }
                        }
                        break;
                }

                return true;
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return false;
            }
        }

Update:

  private bool QCM_Update_COA(char ProcStep)
        {
            TRSNode in_node = new TRSNode("UPDATE_COA_TEMPLATE_IN");
            TRSNode out_node = new TRSNode("CMN_OUT");

            try
            {
                CommonRoutine.SetInMsg(in_node);

                string sCoaTempId = gluCOATemplate.Text;
                string sTempDesc = txtDesc.Text;
                string sBatchId = txtLotID.Text;
                string sCoaDate = deCoaDate.Text;
                in_node.AddString("COA_ID", sCoaTempId);
                in_node.AddString("COA_DESC", sTempDesc);
                in_node.AddString("BATCH_ID", sBatchId);
                in_node.AddString("COA_DATE", sCoaDate);
                in_node.ProcStep = ProcStep;
                if (CommonRoutine.CallService("QCM", "QCM_Update_COA", in_node, ref out_node) == false)
                {
                    return false;
                }

                return true;
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return false;
            }
        }

==================

更新GridView信息后的再显示必不可少,不然二次更新时会不稳定的报异常

private void btnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gdvDetail.PostEditor();
            gdvDetail.UpdateCurrentRow();
            DataTable dt = (DataTable)this.gdcDetail.DataSource;
            //int[] arr = gdvDetail.GetSelectedRows();
            //if (arr.Count() <= 0)
            //{
            //    return;
            //}
            if (CheckCondition("Update_Rel_List", GlobalConstant.SYS_STEP_CREATE) == false) //CheckDataCondition不分SYS_STEP_UPDATE还是SYS_STEP_DELETE
            {
                return;
            }
            if (Update_EG_Event_Item_List() == false)
            {
                return;
            }
            ViewgdvDetail();//更新后再显示
            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(358));
        }

ViewgdvDetail(): 

  public void ViewgdvDetail()
        {
            DataTable dt = new DataTable();
            string sResId = "";
            string sDcpId = "";
            if (cboRes.EditValue != null && cboRes.EditValue.ToString() != "")
            {
                sResId = cboRes.EditValue.ToString();
            }
            else
            {
                InitGVEventDataTable();
                return;
            }
            if (cboDCP.EditValue != null && cboDCP.EditValue.ToString() != "")
            {
                sDcpId = cboDCP.EditValue.ToString();
            }
            else
            {
                InitGVEventDataTable();
                return;
            }
            int[] iaResId = gdvEG.GetSelectedRows();
            if (iaResId.Length > 0)
            {
                if (gdvEG.GetRowCellValue(iaResId[0], "EG_NAME") != null && gdvEG.GetRowCellValue(iaResId[0], "EG_NAME").ToString() != "")
                {
                    string sEgName = gdvEG.GetRowCellValue(iaResId[0], "EG_NAME").ToString();
                    saTableKeys = new string[] { GlobalVariable.gsFactory, sEgName, "EG_NAME", "Event_Group_Edit", sResId, sDcpId };
                    dt = ListRoutineFDC.ViewFDCDCPEGEventList(sResId, sDcpId, sEgName);
                    if (dt != null)
                    {
                        DevGridControlHelper.BindData(gdcDetail, dt, new int[] { -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
                        gdcDetail.RepositoryItems.Add(repositoryItemComboBox2);
                        gdvDetail.Columns[6].ColumnEdit = repositoryItemComboBox2;
                        gdvDetail.Columns[3].OptionsColumn.AllowEdit = false;
                        gdvDetail.Columns[4].OptionsColumn.AllowEdit = false;
                        gdvDetail.Columns[8].OptionsColumn.AllowEdit = false;
                        gdvDetail.Columns[9].OptionsColumn.AllowEdit = false;
                        gdvDetail.Columns[10].OptionsColumn.AllowEdit = false;
                        gdvDetail.Columns[11].OptionsColumn.AllowEdit = false;
                        return;
                    }
                    else
                    {
                        InitGVEventDataTable();
                    }
                }
                else
                {
                    InitGVEventDataTable();
                }
            }
            else
            {
                InitGVEventDataTable();
            }
        }

 

转载于:https://my.oschina.net/8824/blog/3085738

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值