GridControl中给某一列添加时间控件//获取时间并转换为数字//取消勾选,清空该行数据...

博客内容涉及在Oracle数据库中保存和读取时间的方法,客户端时间格式转换,以及GridView中利用复选框和控件操作数据,如取消选择时清空列值,并介绍了添加数字控件和下拉列表的操作。
 RepositoryItemComboBox rcboFormat = new RepositoryItemComboBox();//new一个控件

 gdcFieldPrompt.RepositoryItems.Add(rcboFormat);//将控件添加到GridControl中的Items

 DevGridControlHelper.BindData(gdcFieldPrompt, dtFieldPrompt);//GridControl绑定数据后
                gdvFieldPrompt.Columns[0].OptionsColumn.AllowEdit = false;
                gdvFieldPrompt.Columns[2].ColumnEdit = rcboFormat;//添加控件
                gdvFieldPrompt.Columns[3].ColumnEdit = rspnSize;
                gdvFieldPrompt.Columns[4].ColumnEdit = rcboTable;
                gdvFieldPrompt.Columns[5].ColumnEdit = rcboTableColumn;

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

服务器保存时间至Oracle数据库时直接保存即可:

 //StringBuilder cc =new StringBuilder();
                                //for (int j = 0; j < sIntlckEndTime.Length; j++)
                                //{
                                //    char c = sIntlckEndTime[j];

                                //    if (c != '/' && c != ' ' && c != ':')
                                //    {
                                //        cc.Append(c);
                                //    }
                                //}
                                //sIntlckEndTime = cc.ToString();
                               

客户端取出时间并进行格式转换:

 string sIntlckStartTime = CommonFunction.ToStandardTime((DateTime)gdvMailGroupUser.GetRowCellValue(iUsers[i], "INTLCK_START_TIME"), GlobalConstant.SYS_CONVERT_DATETIME_FORMAT);
                    list_item.AddString("INTLCK_START_TIME", sIntlckStartTime);
                    

 

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

GridView复选框,取消选择行时,清空列的值

  private void gdvMailGroupUser_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
        {
//e.ControllerRow,获取改变行,gdvMailGroupUser.Columns[""],要改变值的列,列名,false为该列的值
            if (!gdvMailGroupUser.IsRowSelected(e.ControllerRow))
            {
                gdvMailGroupUser.SetRowCellValue(e.ControllerRow, gdvMailGroupUser.Columns["INTLCK_EMAIL_FLAG"], false);
                gdvMailGroupUser.SetRowCellValue(e.ControllerRow, gdvMailGroupUser.Columns["INTLCK_SMS_FLAG"], false);
                gdvMailGroupUser.SetRowCellValue(e.ControllerRow, gdvMailGroupUser.Columns["INTLCK_START_TIME"], "");
                gdvMailGroupUser.SetRowCellValue(e.ControllerRow, gdvMailGroupUser.Columns["INTLCK_END_TIME"], ""); 
            }
        }

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

给某一列添加数字(repositoryItemSpinEdit1)控件、下拉(repositoryItemComboBox)控件。
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using MESCore;
using TRSCore;
using MESCore.ListRoutines;
using DevExpress.XtraEditors.Repository;

namespace FDCCore
{
    public partial class frmFDCSpecModelSetup : BaseFormEdit, IBaseFormFunc
    {
        public frmFDCSpecModelSetup()
        {
            InitializeComponent();
        }

        public frmFDCSpecModelSetup(string FormName, string[] TableKeys)
        {
            InitializeComponent();
            this.saTableKeys = TableKeys;
            this.Text = FormName;
        }

        #region  Variable

        private bool mbLoadFlag = false;
        private string[] saTableKeys;
        string sResId = "";
        
        #endregion

        #region Function

        public Control GetFisrtFocusItem()
        {
            try
            {
                return this.tabMain;
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return null;
            }
        }

        /*
        private void ClearData(string ProcStep)
        {
            try
            {
                if (ProcStep == "1")
                {
                    CommonFunction.FieldClear(this.pnlRight);
                }
                else if (ProcStep == "2")
                {
                    CommonFunction.ClearList(lstOperation, true);
                }
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
        }
        */
        RepositoryItemSpinEdit repositoryItemSpinEdit1 = new RepositoryItemSpinEdit();
        RepositoryItemSpinEdit repositoryItemSpinEdit2 = new RepositoryItemSpinEdit();
        RepositoryItemComboBox repositoryItemComboBox = new RepositoryItemComboBox();
        private void InitControl()
        {
            try
            {
                repositoryItemSpinEdit1.IsFloatValue = false;
                repositoryItemSpinEdit2.IsFloatValue = true;

                repositoryItemComboBox.Items.Add("N/A");
                repositoryItemComboBox.Items.Add("ALARM");
                repositoryItemComboBox.Items.Add("HOLD");
                repositoryItemComboBox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
                if (saTableKeys[3]== "Model_Group_Create")
                {
                    txtSpecRawId.Enabled = true;
                    gluProductID.Enabled = true;
                    gluRecipeID.Enabled = true;
                    gluStepID.Enabled = true;
                    gluParaDisplayName.Enabled = true;
                    gluSpecUnit.Enabled = true;
                    gluSpecType.Enabled = true;
                    gluSpecModelGroupID.Enabled = true;
                    gluFdType.Enabled = true;
                    txtCttSpecID.Enabled = true;
                    cheAutoSpecEnabledFlag.Enabled = true;
                    cheIdleCheckFlag.Enabled = true;
                    cheInputType.Enabled = true;
                }
                if (saTableKeys[3] == "Model_Group_Edit")
                {
                    gluProductID.Enabled = false;
                    gluRecipeID.Enabled = false;
                    gluStepID.Enabled = false;
                    gluParaDisplayName.Enabled = false;
                    gluSpecUnit.Enabled = false;
                    gluSpecType.Enabled = false;
                    gluSpecModelGroupID.Enabled = false;
                    gluFdType.Enabled = false;
                    txtCttSpecID.Enabled = false;
                    cheAutoSpecEnabledFlag.Enabled = false;
                    cheIdleCheckFlag.Enabled = false;
                    cheInputType.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
        }

        private bool CheckCondition(string FuncName, char ProcStep)
        {
            try
            {
                switch (CommonFunction.Trim(FuncName))
                {
                    case "Create_Spec_Model_Group":
                        if (txtSpecRawId.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            txtSpecRawId.Focus();
                            return false;
                        }
                        if (CommonFunction.CheckValue(txtSpecRawId,CHECK_VALUE_TYPE.Numeric) ==false)
                        {
                            return false;
                        }
                        if (gluResId.Text =="" )
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluResId.Focus();
                            return false;
                        }
                        if (gluProductID.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluProductID.Focus();
                            return false;
                        }
                        if (gluRecipeID.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluRecipeID.Focus();
                            return false;
                        }
                        if (gluStepID.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluStepID.Focus();
                            return false;
                        }
                        if (gluParaDisplayName.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluParaDisplayName.Focus();
                            return false;
                        }
                        if (gluSpecUnit.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluParaDisplayName.Focus();
                            return false;
                        }
                        if (gluSpecType.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluSpecType.Focus();
                            return false;
                        }
                        if (gluSpecModelGroupID.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluSpecModelGroupID.Focus();
                            return false;
                        }
                        if (gluFdType.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            gluFdType.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_Spec_Model_Group":
                        if (txtSpecRawId.Text == "")
                        {
                            CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                            txtSpecRawId.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)gdcMultiSpec.DataSource;
                        foreach (DataRow dr in dt.Rows)
                        {
                            if (dr.RowState != DataRowState.Deleted)
                            {
                                double d = double.MinValue;
                                double[] dSpec = new double[7];
                                if (dr["SPEC_SEQ"].ToString().Trim() == ""|| dr["SPEC_SEQ"] is DBNull)
                                {
                                    CommonFunction.ShowMsgBox(CommonFunction.GetMessage(108));
                                    return false;
                                }
                                else
                                {
                                    if (Convert.ToInt32(dr["SPEC_SEQ"]) < 0)
                                    {
                                        CommonFunction.ShowMsgBox("SPEC_SEQ:必须是大于等于0的整数!");
                                        return false;
                                    }
                                }
                                if (!(dr["BAND_ORDER"]is DBNull) &&Convert.ToInt32(dr["BAND_ORDER"]) < 0)
                                {
                                    CommonFunction.ShowMsgBox("BAND_ORDER:必须是大于等于0的整数!");
                                    return false;
                                }

                                if (dr["TARGET"] is DBNull)
                                {
                                    dSpec[3] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["TARGET"].ToString(), out d))
                                    {
                                        dSpec[3] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("TARGET:必须是数字!");
                                        return false;
                                    }
                                }

                                if (dr["UHL"] is DBNull)
                                {
                                    dSpec[6] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["UHL"].ToString(), out d))
                                    {
                                        dSpec[6] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("UHL:必须是数字!");
                                        return false;
                                    }
                                }

                                if (dr["USL"] is DBNull)
                                {
                                    dSpec[5] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["USL"].ToString(), out d))
                                    {
                                        dSpec[5] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("USL:必须是数字!");
                                        return false;
                                    }
                                }

                                if (dr["UCL"] is DBNull)
                                {
                                    dSpec[4] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["UCL"].ToString(), out d))
                                    {
                                        dSpec[4] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("UCL:必须是数字!");
                                        return false;
                                    }
                                }

                                if (dr["LCL"] is DBNull)
                                {
                                    dSpec[2] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["LCL"].ToString(), out d))
                                    {
                                        dSpec[2] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("LCL:必须是数字!");
                                        return false;
                                    }
                                }

                                if (dr["LSL"] is DBNull)
                                {
                                    dSpec[1] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["LSL"].ToString(), out d))
                                    {
                                        dSpec[1] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("LSL:必须是数字!");
                                        return false;
                                    }
                                }

                                if (dr["LHL"] is DBNull)
                                {
                                    dSpec[0] = double.MinValue;
                                }
                                else
                                {
                                    if (double.TryParse(dr["LHL"].ToString(), out d))
                                    {
                                        dSpec[0] = d;
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("LHL:必须是数字!");
                                        return false;
                                    }
                                }

                                d = dSpec[0];
                                for (int i = 1; i < 7; i++)
                                {
                                    if (dSpec[i] == double.MinValue)
                                    {
                                        continue;
                                    }
                                    if (dSpec[i] > d)
                                    {
                                        d = dSpec[i];
                                    }
                                    else
                                    {
                                        CommonFunction.ShowMsgBox("硬件下限<规格下限<控制下限<目标值<控制上限<规格上限<硬件上限");
                                        return false;
                                    }
                                }

                                if (!(dr["START_SETTLING_TIME"]is DBNull) && !double.TryParse(dr["START_SETTLING_TIME"].ToString(),out d))
                                {
                                    CommonFunction.ShowMsgBox("START_SETTLING_TIME:必须是数字!");
                                    return false;
                                }

                                if (!(dr["ACTIVATION_TIME"] is DBNull)&& Convert.ToInt32(dr["ACTIVATION_TIME"]) < 0)
                                {
                                    CommonFunction.ShowMsgBox("ACTIVATION_TIME:必须是大于等于0的整数!");
                                    return false;
                                }

                                if (!(dr["FAULT_RULE_X"] is DBNull) && Convert.ToInt32(dr["FAULT_RULE_X"]) < 0)
                                {
                                    CommonFunction.ShowMsgBox("FAULT_RULE_X:必须是大于等于0的整数!");
                                    return false;
                                }
                                if (!(dr["FAULT_RULE_Y"] is DBNull) && Convert.ToInt32(dr["FAULT_RULE_Y"]) < 0)
                                {
                                    CommonFunction.ShowMsgBox("FAULT_RULE_Y:必须是大于等于0的整数!");
                                    return false;
                                }
                                if ((dr["FAULT_RULE_X"] is DBNull)&& !(dr["FAULT_RULE_Y"] is DBNull) )
                                {
                                    int iFAULT_RULE_X = 0;
                                   if (!int.TryParse(dr["FAULT_RULE_X"].ToString(),out iFAULT_RULE_X))
                                    {
                                        dr["FAULT_RULE_X"] = iFAULT_RULE_X;
                                    }
                                    if(Convert.ToInt32(dr["FAULT_RULE_Y"])< Convert.ToInt32(dr["FAULT_RULE_X"]))
                                    {
                                        CommonFunction.ShowMsgBox("FAULT_RULE_Y必须大于等于FAULT_RULE_X!");
                                        return false;
                                    }
                                  
                                }
                                if ((dr["FAULT_RULE_Y"] is DBNull) && !(dr["FAULT_RULE_X"] is DBNull))
                                {
                                    int iFAULT_RULE_Y= 0;
                                    if (!int.TryParse(dr["FAULT_RULE_Y"].ToString(), out iFAULT_RULE_Y))
                                    {
                                        dr["FAULT_RULE_Y"] = iFAULT_RULE_Y;
                                    }
                                    if (Convert.ToInt32(dr["FAULT_RULE_Y"]) < Convert.ToInt32(dr["FAULT_RULE_X"]))
                                    {
                                        CommonFunction.ShowMsgBox("FAULT_RULE_Y必须大于等于FAULT_RULE_X!");
                                        return false;
                                    }

                                }
                                if (!(dr["FAULT_RULE_Y"] is DBNull) && !(dr["FAULT_RULE_X"] is DBNull))
                                {
                                    if (Convert.ToInt32(dr["FAULT_RULE_Y"]) < Convert.ToInt32(dr["FAULT_RULE_X"]))
                                    {
                                        CommonFunction.ShowMsgBox("FAULT_RULE_Y必须大于等于FAULT_RULE_X!");
                                        return false;
                                    }

                                }
                                if (!(dr["END_SETTLING_TIME"] is DBNull)&&Convert.ToInt32(dr["END_SETTLING_TIME"]) < 0)
                                {
                                    CommonFunction.ShowMsgBox("END_SETTLING_TIME:必须是大于等于0的整数!");
                                    return false;
                                }

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

        //初始进入界面,向TEXT中添加数据
        public bool View_Spec_Model()
        {
            TRSNode in_node = new TRSNode("VIEW_BATCH_INFO_IN");
            TRSNode out_node = new TRSNode("VIEW_BATCH_INFO_OUT");

            try
            {
                if (saTableKeys != null && saTableKeys[1] != ""&& saTableKeys[2] == "RAW_ID")
                {
                    int iRawId = 0;
                    bool bRawID = int.TryParse(saTableKeys[1], out iRawId);
                    CommonRoutine.SetInMsg(in_node);
                    in_node.ProcStep = '1';
                    in_node.AddInt("SPEC_RAWID", iRawId);
                    if (CommonRoutine.CallService("FDC", "FDC_View_Trace_Spec", in_node, ref out_node) == false)
                    {
                        return false;
                    }

                    //DevGridLookupHelper.InitPopup(gluSpecUnit, new string[] { "VERSION" });
                    this.txtSpecRawId.Text = out_node.GetInt("SPEC_RAWID").ToString();
                    //this.txtSpecRawId.Text = CommonFunction.Trim(out_node.GetString("SPEC_RAWID"));
                    this.gluProductID.EditValue = CommonFunction.Trim(out_node.GetString("PRODUCT_ID"));
                    this.gluRecipeID.EditValue = CommonFunction.Trim(out_node.GetString("RECIPE_ID"));
                    this.gluStepID.EditValue = CommonFunction.Trim(out_node.GetString("STEP_ID"));
                    this.gluParaDisplayName.EditValue = CommonFunction.Trim(out_node.GetString("PARA_DISPLAY_NAME"));
                    string str= CommonFunction.Trim(out_node.GetString("SPEC_UNIT"));
                    this.gluSpecUnit.EditValue = CommonFunction.Trim(out_node.GetString("SPEC_UNIT"));
                    this.gluSpecType.EditValue = CommonFunction.Trim(out_node.GetString("SPEC_TYPE"));
                    this.cheInputType.EditValue = CommonFunction.Trim(out_node.GetString("INPUT_TYPE")) == "Y";
                    this.cheActivateFlag.EditValue = CommonFunction.Trim(out_node.GetString("ACTIVATE_FLAG")) == "Y";
                    this.cheIdleCheckFlag.EditValue = CommonFunction.Trim(out_node.GetString("IDLE_CHECK_FLAG")) == "Y";
                    this.gluSpecModelGroupID.EditValue = CommonFunction.Trim(out_node.GetString("SPEC_MODEL_GROUP_ID"));
                    this.txtDesc.Text = CommonFunction.Trim(out_node.GetString("SPEC_DESC"));
                    this.gluFdType.EditValue = CommonFunction.Trim(out_node.GetString("FD_TYPE"));
                    this.txtCttSpecID.Text = out_node.GetInt("CTT_SPEC_ID").ToString();
                    this.cheAutoSpecEnabledFlag.EditValue = CommonFunction.Trim(out_node.GetString("AUTO_SPEC_ENABLED_FLAG")) == "Y";
                    this.txtCreateTime.Text = CommonFunction.MakeDateFormat(CommonFunction.Trim(out_node.GetString("CREATE_TIME")));
                    this.txtCreateUser.Text = CommonFunction.Trim(out_node.GetString("CREATE_USER_ID"));
                    this.txtUpdateTime.Text = CommonFunction.MakeDateFormat(CommonFunction.Trim(out_node.GetString("UPDATE_TIME")));
                    this.txtUpdateUser.Text = CommonFunction.Trim(out_node.GetString("UPDATE_USER_ID"));

                    FDC_View_Trace_MTSpec_List();

                    return true;
                }
                else
                {
                    this.txtSpecRawId.Text = "";
                    this.gluProductID.EditValue = "";
                    this.gluRecipeID.EditValue = "";
                    this.gluStepID.EditValue = "";
                    this.gluParaDisplayName.EditValue = "";
                    this.gluSpecUnit.EditValue = "";
                    this.gluSpecType.EditValue = "";
                    this.cheInputType.EditValue = "";
                    this.cheActivateFlag.EditValue = "";
                    this.cheIdleCheckFlag.EditValue = "";
                    this.gluSpecModelGroupID.EditValue = "";
                    this.txtDesc.Text = "";
                    this.gluFdType.EditValue = "";
                    this.txtCttSpecID.Text = "";
                    this.cheAutoSpecEnabledFlag.EditValue = "False";

                    DataTable dtResult = new DataTable();

                    udcGVNewDelCtrl1.RecordCount = 0;
                    dtResult.Columns.Add("SPEC_SEQ");
                    dtResult.Columns.Add("BAND_ORDER");
                    dtResult.Columns.Add("INTERLOCK_FLAG", typeof(Boolean));
                    dtResult.Columns.Add("TARGET");
                    dtResult.Columns.Add("UHL");
                    dtResult.Columns.Add("USL");
                    dtResult.Columns.Add("UCL");
                    dtResult.Columns.Add("LCL");
                    dtResult.Columns.Add("LSL");
                    dtResult.Columns.Add("LHL");
                    dtResult.Columns.Add("START_SETTLING_TIME");
                    dtResult.Columns.Add("ACTIVATION_TIME");
                    dtResult.Columns.Add("FAULT_RULE_X");
                    dtResult.Columns.Add("FAULT_RULE_Y");
                    dtResult.Columns.Add("DRIFT_ENABLED_FLAG", typeof(Boolean));
                    dtResult.Columns.Add("SHIFT_ENABLED_FLAG", typeof(Boolean));
                    dtResult.Columns.Add("COMPOSITE");
                    dtResult.Columns.Add("SPEC_DETAIL_DESC");
                    dtResult.Columns.Add("INPUT_TYPE");
                    dtResult.Columns.Add("END_SETTLING_TIME");
                    dtResult.Columns.Add("UH_FAULT_LEVEL");
                    dtResult.Columns.Add("US_FAULT_LEVEL");
                    dtResult.Columns.Add("UC_FAULT_LEVEL");
                    dtResult.Columns.Add("LC_FAULT_LEVEL");
                    dtResult.Columns.Add("LS_FAULT_LEVEL");
                    dtResult.Columns.Add("LH_FAULT_LEVEL");
                    dtResult.Columns.Add("OCAP_ENABLED_FLAG", typeof(Boolean));
                    int[] iaWidth = new int[dtResult.Columns.Count];
                    for (int i = 0; i < dtResult.Columns.Count; i++)
                    {
                        iaWidth[i] = 80;
                    }
                    DevGridControlHelper.BindData(gdcMultiSpec, dtResult, iaWidth);

                    gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit1);
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit2);
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemComboBox);
                    gdvMultiSpec.Columns[0].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[1].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[3].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[4].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[5].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[6].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[7].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[8].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[9].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[10].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[11].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[12].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[13].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[19].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[20].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[21].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[22].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[23].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[24].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[25].ColumnEdit = repositoryItemComboBox;
                    return false;
                    return false;
                }
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return false;
            }
        }

        public bool FDC_View_Trace_MTSpec_List()
        {
            DataTable dt = new DataTable();
            if (saTableKeys[1] != "")
            {
                int iRawId = Convert.ToInt32(saTableKeys[1]);
                dt = ListRoutineFDC.ViewFDCTraceMTSpecList(iRawId, 0);
                if (dt != null)
                {
                    udcGVNewDelCtrl1.RecordCount = dt.Rows.Count;
                    int[] iaWidth = new int[dt.Columns.Count];
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        iaWidth[i] = 80;
                    }
                    DevGridControlHelper.BindData(gdcMultiSpec, dt, iaWidth);
                    //gdvMultiSpec.Columns[0].OptionsColumn.AllowEdit = false;
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit1);
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit2); 
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemComboBox);
                    gdvMultiSpec.Columns[0].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[1].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[3].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[4].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[5].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[6].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[7].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[8].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[9].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[10].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[11].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[12].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[13].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[19].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[20].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[21].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[22].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[23].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[24].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[25].ColumnEdit = repositoryItemComboBox;
                    return true;
                }
                else
                {
                    udcGVNewDelCtrl1.RecordCount = 0;
                    int[] iaWidth = new int[dt.Columns.Count];
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        iaWidth[i] = 80;
                    }
                    DevGridControlHelper.BindData(gdcMultiSpec, dt, iaWidth);

                    gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit1);
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit2);
                    gdcMultiSpec.RepositoryItems.Add(repositoryItemComboBox);
                    gdvMultiSpec.Columns[0].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[1].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[3].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[4].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[5].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[6].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[7].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[8].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[9].ColumnEdit = repositoryItemSpinEdit2;
                    gdvMultiSpec.Columns[10].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[11].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[12].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[13].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[19].ColumnEdit = repositoryItemSpinEdit1;
                    gdvMultiSpec.Columns[20].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[21].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[22].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[23].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[24].ColumnEdit = repositoryItemComboBox;
                    gdvMultiSpec.Columns[25].ColumnEdit = repositoryItemComboBox;
                    return false;
                }
            }
            else
            {
                udcGVNewDelCtrl1.RecordCount = 0;
                dt.Columns.Add("SPEC_SEQ");
                dt.Columns.Add("BAND_ORDER");
                dt.Columns.Add("INTERLOCK_FLAG", typeof(Boolean));
                dt.Columns.Add("TARGET");
                dt.Columns.Add("UHL");
                dt.Columns.Add("USL");
                dt.Columns.Add("UCL");
                dt.Columns.Add("LCL");
                dt.Columns.Add("LSL");
                dt.Columns.Add("LHL");
                dt.Columns.Add("START_SETTLING_TIME");
                dt.Columns.Add("ACTIVATION_TIME");
                dt.Columns.Add("FAULT_RULE_X");
                dt.Columns.Add("FAULT_RULE_Y");
                dt.Columns.Add("DRIFT_ENABLED_FLAG", typeof(Boolean));
                dt.Columns.Add("SHIFT_ENABLED_FLAG", typeof(Boolean));
                dt.Columns.Add("COMPOSITE");
                dt.Columns.Add("SPEC_DETAIL_DESC");
                dt.Columns.Add("INPUT_TYPE");
                dt.Columns.Add("END_SETTLING_TIME");
                dt.Columns.Add("UH_FAULT_LEVEL");
                dt.Columns.Add("US_FAULT_LEVEL");
                dt.Columns.Add("UC_FAULT_LEVEL");
                dt.Columns.Add("LC_FAULT_LEVEL");
                dt.Columns.Add("LS_FAULT_LEVEL");
                dt.Columns.Add("LH_FAULT_LEVEL");
                dt.Columns.Add("OCAP_ENABLED_FLAG", typeof(Boolean));
                int[] iaWidth = new int[dt.Columns.Count];
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    iaWidth[i] = 80;
                }
                DevGridControlHelper.BindData(gdcMultiSpec, dt, iaWidth);

                gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit1);
                gdcMultiSpec.RepositoryItems.Add(repositoryItemSpinEdit2);
                gdcMultiSpec.RepositoryItems.Add(repositoryItemComboBox);
                gdvMultiSpec.Columns[0].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[1].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[3].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[4].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[5].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[6].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[7].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[8].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[9].ColumnEdit = repositoryItemSpinEdit2;
                gdvMultiSpec.Columns[10].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[11].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[12].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[13].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[19].ColumnEdit = repositoryItemSpinEdit1;
                gdvMultiSpec.Columns[20].ColumnEdit = repositoryItemComboBox;
                gdvMultiSpec.Columns[21].ColumnEdit = repositoryItemComboBox;
                gdvMultiSpec.Columns[22].ColumnEdit = repositoryItemComboBox;
                gdvMultiSpec.Columns[23].ColumnEdit = repositoryItemComboBox;
                gdvMultiSpec.Columns[24].ColumnEdit = repositoryItemComboBox;
                gdvMultiSpec.Columns[25].ColumnEdit = repositoryItemComboBox;
                return false;
            }
        }
        public bool View_Spec_Model_ResId()
        {
            TRSNode in_node = new TRSNode("VIEW_BATCH_INFO_IN");
            TRSNode out_node = new TRSNode("VIEW_BATCH_INFO_OUT");

            try
            {
                if (saTableKeys != null && saTableKeys[2] == "RAW_ID")
                {
                    this.gluLocation.EditValue = saTableKeys[4];
                    this.gluModel.EditValue = saTableKeys[5];
                    this.gluModelVer.EditValue = saTableKeys[6];
                    this.gluResId.EditValue = saTableKeys[7];

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

        private bool Update_Spec_Model(char ProcStep)
        {

            TRSNode in_node = new TRSNode("UPDATE_SPEC_MODEL_IN");
            TRSNode out_node = new TRSNode("CMN_OUT");
            //ListViewDataItem itm;
            int idx;

            try
            {
                CommonRoutine.SetInMsg(in_node);
                in_node.ProcStep = ProcStep;

                in_node.AddString("RES_ID", CommonFunction.Trim(gluResId.Text));
                int iSpecRawId = 0;
                bool bSpecRawId = int.TryParse(txtSpecRawId.Text, out iSpecRawId);
                if (int.TryParse(txtSpecRawId.Text, out iSpecRawId))
                {
                    if (iSpecRawId < 0)
                    {
                        CommonFunction.ShowMsgBox("Spec Raw Id:此字段必须是大于等于0的整数!");
                        txtSpecRawId.Focus();
                        return false;
                    }
                }
                else
                {
                    CommonFunction.ShowMsgBox("Spec Raw Id:此字段必须是大于等于0的整数!");
                    txtSpecRawId.Focus();
                    return false;
                }
                int iCttSpecID = 0;
                //string sCttSpecID = txtCttSpecID.Text;
                //bool bCttSpecID = int.TryParse(txtCttSpecID.Text, out iSpecRawId);
                //if (int.TryParse(txtCttSpecID.Text, out iCttSpecID))
                //{
                //    if (iSpecRawId < 0)
                //    {
                //        CommonFunction.ShowMsgBox("Ctt Spec ID:此字段必须是大于等于0的整数!");
                //        txtCttSpecID.Focus();
                //        return false;
                //    }
                //}
                //else
                //{
                //    CommonFunction.ShowMsgBox("Ctt Spec ID:此字段必须是大于等于0的整数!");
                //    txtCttSpecID.Focus();
                //    return false;
                //}
                in_node.AddInt("SPEC_RAWID", iSpecRawId);
                in_node.AddString("SPEC_DESC", CommonFunction.Trim(txtDesc.Text));
                in_node.AddString("ACTIVATE_FLAG", CommonFunction.Trim(cheActivateFlag.EditValue) =="True"?"Y":"N");
                if (ProcStep=='I')
                {
                    in_node.AddString("PRODUCT_ID", CommonFunction.Trim(gluProductID.Text));
                    in_node.AddString("RECIPE_ID", CommonFunction.Trim(gluRecipeID.Text));
                    in_node.AddString("STEP_ID", CommonFunction.Trim(gluStepID.Text));
                    in_node.AddString("PARA_DISPLAY_NAME", CommonFunction.Trim(gluParaDisplayName.Text));
                    in_node.AddString("SPEC_UNIT", CommonFunction.Trim(gluSpecUnit.Text));
                    in_node.AddString("INPUT_TYPE", CommonFunction.Trim(cheInputType.EditValue) == "True" ? "Y" : "N");
                    in_node.AddString("SPEC_TYPE", CommonFunction.Trim(gluSpecType.Text));
                    in_node.AddString("SPEC_MODEL_GROUP_ID", CommonFunction.Trim(gluSpecModelGroupID.Text));
                    in_node.AddString("FD_TYPE", CommonFunction.Trim(gluFdType.Text));
                    //
                    in_node.AddInt("CTT_SPEC_ID", iCttSpecID);
                    in_node.AddString("AUTO_SPEC_ENABLED_FLAG", CommonFunction.Trim(cheAutoSpecEnabledFlag.EditValue) =="True"?"Y":"N");
                    in_node.AddString("IDLE_CHECK_FLAG", CommonFunction.Trim(cheIdleCheckFlag.EditValue) == "True" ? "Y" : "N");
                }


                if (CommonRoutine.CallService("FDC", "FDC_Update_Trace_Spec", in_node, ref out_node) == false)
                {
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return false;
            }
        }

        #endregion

        #region Control Event Function

        protected override void ExecNewEvent()
        {
            if (gluResId.EditValue!=null&&saTableKeys!=null)
            {
                saTableKeys.SetValue("Model_Group_Create",3);
                saTableKeys.SetValue("",1);
                CommonFunction.OpenForm(CommonFunction.GetMenuTag(GlobalConstant.FORMID_FDC_SPEC_MODEL_SETUP), "New Spec Model", saTableKeys);
                return;
            }
            else
            {
                CommonFunction.ShowMsgBox("请先选择ResId!");
                return;
            }
           
        }

        protected override void ExecRefreshEvent()
        {
            if (CommonFunction.ShowMsgBox(CommonFunction.GetMessage(357)) == DialogResult.OK)
            {
                View_Spec_Model_ResId();
                View_Spec_Model();
                //FDC_View_Trace_MTSpec_List();
            }
        }

        protected override void ExecSaveEvent()
        {
            try
            {
                gdvMultiSpec.PostEditor();
                gdvMultiSpec.UpdateCurrentRow();
                if (saTableKeys != null&&saTableKeys[3]== "Model_Group_Edit")
                {
                    if (CheckCondition("Update_Spec_Model_Group", GlobalConstant.SYS_STEP_UPDATE) == false)
                    {
                        return;
                    }
                    //修改后提示并返回列表
                    //CommonFunction.ShowMsgBox("修改成功!");
                    if (Update_Spec_Model(GlobalConstant.SYS_STEP_UPDATE) == false)
                    {
                        return;
                    }
                }
                else if (saTableKeys != null&&saTableKeys[3]== "Model_Group_Create")
                {
                    if (CheckCondition("Create_Spec_Model_Group", GlobalConstant.SYS_STEP_CREATE) == false)
                    {
                        return;
                    }
                    if (Update_Spec_Model(GlobalConstant.SYS_STEP_CREATE) == false)
                    {
                        return;
                    }
                    //删除后提示并返回列表
                    //CommonFunction.ShowMsgBox("新建成功!!");
                    saTableKeys.SetValue(txtSpecRawId.Text, 1);
                    saTableKeys.SetValue("Model_Group_Edit", 3);
                    this.rpgCreate.Visible = true;
                    this.rpgLifeCycle.Visible = true;
                    this.Text = CommonFunction.FindLanguage("Spec Model", CAPTION_TYPE.MENU) + " - " + this.txtSpecRawId.Text;
                    txtSpecRawId.Enabled = false;
                    gluProductID.Enabled = false;
                    gluRecipeID.Enabled = false;
                    gluStepID.Enabled = false;
                    gluParaDisplayName.Enabled = false;
                    gluSpecUnit.Enabled = false;
                    gluSpecType.Enabled = false;
                    gluSpecModelGroupID.Enabled = false;
                    gluFdType.Enabled = false;
                    txtCttSpecID.Enabled = false;
                    cheAutoSpecEnabledFlag.Enabled = false;
                    cheIdleCheckFlag.Enabled = false;
                    cheInputType.Enabled = false;
                    //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_Spec_Model_List() == false)
                {
                    return;
                }

                View_Spec_Model();
                CommonFunction.ShowMsgBox(CommonFunction.GetMessage(358));
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
        }

        protected override void ExecCancelEvent()
        {
            if (CommonFunction.ShowMsgBox(CommonFunction.GetMessage(357)) == DialogResult.OK)
            {
                View_Spec_Model();
            }
        }

        protected override void ExecTerminateEvent()
        {
            try
            {
                if (CommonFunction.ShowMsgBox(CommonFunction.GetMessage(54), MessageBoxButtons.YesNo, 2) != System.Windows.Forms.DialogResult.Yes)
                {
                    return;
                }
                if (CheckCondition("Update_Spec_Model", GlobalConstant.SYS_STEP_DELETE) == true)
                {
                    if (Update_Spec_Model(GlobalConstant.SYS_STEP_DELETE) == false)
                    {
                        return;
                    }
                    //删除后提示并返回列表
                    if (CommonFunction.ShowMsgBox(CommonFunction.GetMessage(359)) != DialogResult.None)
                    {
                        saTableKeys = new string[] { GlobalVariable.gsFactory, saTableKeys[7], "RES_ID" };
                        //CommonFunction.OpenForm(CommonFunction.GetMenuTag(GlobalConstant.FORMID_FDC_SPEC_MODEL_LIST), "Spec Model List", saTableKeys);
                        CommonFunction.ActivateForm(CommonFunction.GetMenuTag(GlobalConstant.FORMID_FDC_SPEC_MODEL_LIST), "Spec Model List", true);
                        this.Close();
                    }
                    //if (GlobalVariable.gLoginInfo.bListAutoRefresh == true)
                    //{
                    //    btnRefresh.PerformClick();
                    //}
                }
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
        }

        #endregion

        #region Control Event

        private void frmFDCSpecModelSetup_Load(object sender, EventArgs e)
        {
            try
            {
                if (mbLoadFlag == false)
                {
                    InitControl();
                    SetBtnNewEnable(false);
                    gluModelIdAddData();
                    gluLocationAddData();
                    gluModelVerAddData();
                    gluProductIDAddData();
                    gluRecipeIDAddData();
                    gluStepIDAddData();
                    gluParaDisplayNameAddData();
                    gluSpecUnitAddData();
                    gluSpecTypeAddData();
                    gluSpecModelGroupIDAddData();
                    gluFdTypeAddData();
                    View_Spec_Model_ResId();
                    View_Spec_Model();
                    mbLoadFlag = true;
                }
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
        }


        #endregion

    
        private bool BindGV()
        {
            string sModel = "";
            string sLocation = "";
            string sModelVer = "";
            if (gluLocation.EditValue != null && gluLocation.EditValue.ToString() != "")
            {
                sLocation = gluLocation.EditValue.ToString();
            }
            if (gluModel.EditValue != null && gluModel.EditValue.ToString() != "")
            {
                sModel = gluModel.EditValue.ToString();
            }
            if (gluModelVer.EditValue != null && gluModelVer.EditValue.ToString() != "")
            {
                sModelVer = gluModelVer.EditValue.ToString();
            }
            if (sModel != "" || sLocation != "")
            {
                DataTable dt = ListRoutineFDC.ViewFDCResourceList(sLocationId: sLocation, sModelId: sModel, sModelVer: sModelVer);

                if (dt != null)
                {
                    //repositoryItemGridLookUpEdit4.DataSource = dt;
                    DataRow dr = dt.NewRow();
                    dr[0] = "";
                    dt.Rows.InsertAt(dr, 0);
                    DevGridLookupHelper.InitPopup(this.gluResId, new string[] { "选择设备ID" }, dt);
                    return true;
                }
                else
                {
                    return false;
                }

            }
            return false;
        }
        #region 绑定下拉列表
        private void gluModelIdAddData(string sLocationId = "")
        {
            if (sLocationId != "")
            {
                DataTable dt = ListRoutineFDC.ViewFDCResModelList(sLocationId);
                if (dt != null)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = "";
                    dt.Rows.InsertAt(dr, 0);
                    DevGridLookupHelper.InitPopup(this.gluModel, new string[] { "选择模型ID" }, dt);
                }
            }
            else
            {
                DataTable dt1 = new DataTable();
                dt1.Columns.Add(" ");
                dt1.Rows.Add("");
                DevGridLookupHelper.InitPopup(this.gluModel, new string[] { "选择模型ID" }, dt1);
            }
        }
        private void gluLocationAddData()
        {
            DataTable dt = ListRoutineFDC.ViewFDCLocationList();
            if (dt != null)
            {
                DataRow dr = dt.NewRow();
                dr[0] = "";
                dt.Rows.InsertAt(dr, 0);
                DevGridLookupHelper.InitPopup(this.gluLocation, new string[] { "选择位置ID" }, dt);
            }
            else
            {
                DataTable dt1 = new DataTable();
                dt1.Columns.Add("");
                dt1.Rows.Add(" ");
                DevGridLookupHelper.InitPopup(this.gluLocation, new string[] { "选择位置ID" }, dt1);
            }
        }
        private void gluModelVerAddData(string sModelId = "")
        {
            if (sModelId != "")
            {
                DataTable dt = ListRoutineFDC.ViewFDCResModelVersionList(sModelId);
                if (dt != null)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = "";
                    dt.Rows.InsertAt(dr, 0);
                    DevGridLookupHelper.InitPopup(this.gluModelVer, new string[] { "选择模型版本" }, dt);
                }
            }
            else
            {
                DataTable dt = new DataTable();
                dt.Columns.Add(" ");
                dt.Rows.Add("");
                DevGridLookupHelper.InitPopup(this.gluModelVer, new string[] { "选择模型版本" }, dt);

            }
        }
        private void gluProductIDAddData(string sProductID = "")
        {
                DataTable dt = new DataTable();
                dt.Columns.Add(" ");
                DataRow dr = dt.NewRow();
                dr[0] = "DAFAULT_ALL";
                dt.Rows.InsertAt(dr, 0);

                DevGridLookupHelper.InitPopup(this.gluProductID, new string[] { "选择产品ID" }, dt);
        }
        private void gluRecipeIDAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(" ");
            dt.Rows.Add("DAFAULT_ALL");
            DevGridLookupHelper.InitPopup(this.gluRecipeID, new string[] { "选择配方ID" }, dt);
        }
        private void gluStepIDAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(" ");
            dt.Rows.Add("DAFAULT_ALL");
            DevGridLookupHelper.InitPopup(this.gluStepID, new string[] { "选择步骤ID" }, dt);
        }
        private void gluParaDisplayNameAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();

            string sResId = saTableKeys[7];
            dt = ListRoutineFDC.ViewFDCDCPTraceParaListByResId('1', sResId);
            if (dt != null)
            {
                DataRow dr = dt.NewRow();
                dr[0] = "";
                dt.Rows.InsertAt(dr, 0);
                DevGridLookupHelper.InitPopup(this.gluParaDisplayName, new string[] { "选择参数显示名称" }, dt);
            }
            else
            {
                dt.Columns.Add(" ");
                dt.Rows.Add(" ");
                DevGridLookupHelper.InitPopup(this.gluParaDisplayName, new string[] { "选择参数显示名称" }, dt);
            }
        }
        private void gluSpecUnitAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(" ");
            dt.Rows.Add("STEP");
            dt.Rows.Add("RECIPESTEP");
            dt.Rows.Add("MODULE");
            DevGridLookupHelper.InitPopup(this.gluSpecUnit, new string[] { "选择SPEC单位" }, dt);
        }
       
        private void gluSpecTypeAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(" ");
            dt.Rows.Add("NORMAL");
            dt.Rows.Add("MULTI");
            dt.Rows.Add("INTRA STEP");
            dt.Rows.Add("PATTERN");
            DevGridLookupHelper.InitPopup(this.gluSpecType, new string[] { "选择 SPEC 类型" }, dt);
        }
        
        
        private void gluSpecModelGroupIDAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();
            string sResId = saTableKeys[7];
            dt = ListRoutineFDC.ViewFDCSpecModelGroupList('2',sResId);
            if (dt != null)
            {
                DataRow dr = dt.NewRow();
                dr[0] = "";
                dt.Rows.InsertAt(dr, 0);
                DevGridLookupHelper.InitPopup(this.gluSpecModelGroupID, new string[] { "选择所属SPEC分组" }, dt);
            }
            else
            {
                dt.Columns.Add(" ");
                dt.Rows.Add(" ");
                DevGridLookupHelper.InitPopup(this.gluSpecModelGroupID, new string[] { "选择所属SPEC分组" }, dt);
            }
            
           
        }
        private void gluFdTypeAddData(string sProductID = "")
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(" ");
            dt.Rows.Add("TIME");
            dt.Rows.Add("COUNT");
            DevGridLookupHelper.InitPopup(this.gluFdType, new string[] { "选择SPEC 生效方式" }, dt);
        }
        #endregion

        #region 下拉列表的Changed事件
        private void gluLocation_EditValueChanged(object sender, EventArgs e)
        {
            if (gluLocation.EditValue.ToString() != "")
            {
                string sLocationID = gluLocation.EditValue.ToString();
                gluModel.Enabled = false;
                gluModelIdAddData(sLocationId: sLocationID);
                gluModel.EditValue = "";
                gluModelVer.EditValue = "";
                gluResId.EditValue = "";
            }
            if (gluLocation.EditValue.ToString() == "")
            {
                gluModel.Enabled = false;
                gluModelIdAddData();
                gluModel.EditValue = "";
                gluModelVer.EditValue = "";
                gluResId.EditValue = "";
            }
            if (gluLocation.EditValue.ToString() == "")
            {
                gluResId.Enabled = false;
                gluModelIdAddData();
                gluModel.EditValue = "";
                gluModelVer.EditValue = "";
                gluResId.EditValue = "";
            }
            BindGV();
        }

        private void gluModel_EditValueChanged(object sender, EventArgs e)
        {
            if (gluModel.EditValue.ToString() != "")
            {
                string sModelID = gluModel.EditValue.ToString();
                gluModelVer.Enabled = false;
                gluModelVerAddData(sModelId: sModelID);
                gluModelVer.EditValue = "";
                gluResId.EditValue = "";

            }
            if (gluModel.EditValue.ToString() == "")
            {
                gluModelVer.Enabled = false;
                gluModelVerAddData();
                gluModelVer.EditValue = "";
                gluResId.EditValue = "";
            }

            BindGV();

            //saTableKeys = new string[] { GlobalVariable.gsFactory, "", "RAW_ID"};
            //View_Spec_Model();
        }

        private void gluModelVer_EditValueChanged(object sender, EventArgs e)
        {
            if (gluModelVer.EditValue.ToString() != "")
            {
                string sModelID = gluModelVer.EditValue.ToString();
                gluResId.Enabled = false;
                gluResId.EditValue = "";
                //cboModelVerAddData(sModelId: sModelID);
            }
            if (gluModelVer.EditValue.ToString() == "")
            {
                gluResId.Enabled = false;
                gluResId.EditValue = "";
                //cboModelVerAddData();
            }
            BindGV();
        }

        private void gluResId_EditValueChanged(object sender, EventArgs e)
        {
            sResId = (sender as TextEdit).Text;// (sender as TextEdit).Text
        }
        #endregion

        #region  gdvMTSpec
        private TRSNode FillUpdateRecords(TRSNode in_node, DataTable dtDataEdited, bool bOriginal, char cStep)
        {
            TRSNode node;
            for (int i = 0; i < dtDataEdited.Rows.Count; i++)
            {
                node = in_node.AddNode("ITEM_LIST");
                node.ProcStep = cStep;
                if (bOriginal)
                {
                    node.AddInt("SPEC_SEQ", dtDataEdited.Rows[i]["SPEC_SEQ", DataRowVersion.Original]);
                    node.AddInt("BAND_ORDER", dtDataEdited.Rows[i]["BAND_ORDER", DataRowVersion.Original]);
                    node.AddString("INTERLOCK_FLAG", dtDataEdited.Rows[i]["INTERLOCK_FLAG", DataRowVersion.Original].ToString() == "True"?"Y":"N");
                    node.AddDouble("TARGET", dtDataEdited.Rows[i]["TARGET", DataRowVersion.Original]);
                    node.AddDouble("UHL", dtDataEdited.Rows[i]["UHL", DataRowVersion.Original]);
                    node.AddDouble("USL", dtDataEdited.Rows[i]["USL", DataRowVersion.Original]);
                    node.AddDouble("UCL", dtDataEdited.Rows[i]["UCL", DataRowVersion.Original]);
                    node.AddDouble("LCL", dtDataEdited.Rows[i]["LCL", DataRowVersion.Original]);
                    node.AddDouble("LSL", dtDataEdited.Rows[i]["LSL", DataRowVersion.Original]);
                    node.AddDouble("LHL", dtDataEdited.Rows[i]["LHL", DataRowVersion.Original]);
                    node.AddInt("START_SETTLING_TIME", dtDataEdited.Rows[i]["START_SETTLING_TIME", DataRowVersion.Original]);
                    node.AddInt("ACTIVATION_TIME", dtDataEdited.Rows[i]["ACTIVATION_TIME", DataRowVersion.Original]);
                    node.AddInt("FAULT_RULE_X", dtDataEdited.Rows[i]["FAULT_RULE_X", DataRowVersion.Original]);
                    node.AddInt("FAULT_RULE_Y", dtDataEdited.Rows[i]["FAULT_RULE_Y", DataRowVersion.Original]);
                    node.AddString("DRIFT_ENABLED_FLAG", dtDataEdited.Rows[i]["DRIFT_ENABLED_FLAG", DataRowVersion.Original].ToString() == "True"?"Y":"N");
                    node.AddString("SHIFT_ENABLED_FLAG", dtDataEdited.Rows[i]["SHIFT_ENABLED_FLAG", DataRowVersion.Original].ToString() == "True"?"Y":"N");
                    node.AddString("COMPOSITE", dtDataEdited.Rows[i]["COMPOSITE", DataRowVersion.Original]);
                    node.AddString("SPEC_DETAIL_DESC", dtDataEdited.Rows[i]["SPEC_DETAIL_DESC", DataRowVersion.Original]);
                    node.AddString("INPUT_TYPE", dtDataEdited.Rows[i]["INPUT_TYPE", DataRowVersion.Original]);
                    node.AddInt("END_SETTLING_TIME", dtDataEdited.Rows[i]["END_SETTLING_TIME", DataRowVersion.Original]);
                    node.AddString("UH_FAULT_LEVEL", dtDataEdited.Rows[i]["UH_FAULT_LEVEL", DataRowVersion.Original]);
                    node.AddString("US_FAULT_LEVEL", dtDataEdited.Rows[i]["US_FAULT_LEVEL", DataRowVersion.Original]);
                    node.AddString("UC_FAULT_LEVEL", dtDataEdited.Rows[i]["UC_FAULT_LEVEL", DataRowVersion.Original]);
                    node.AddString("LC_FAULT_LEVEL", dtDataEdited.Rows[i]["LC_FAULT_LEVEL", DataRowVersion.Original]);
                    node.AddString("LS_FAULT_LEVEL", dtDataEdited.Rows[i]["LS_FAULT_LEVEL", DataRowVersion.Original]);
                    node.AddString("LH_FAULT_LEVEL", dtDataEdited.Rows[i]["LH_FAULT_LEVEL", DataRowVersion.Original]);
                    node.AddString("OCAP_ENABLED_FLAG", dtDataEdited.Rows[i]["OCAP_ENABLED_FLAG", DataRowVersion.Original].ToString() == "True"?"Y":"N");
                }
                else
                {
                    node.AddInt("SPEC_SEQ", dtDataEdited.Rows[i]["SPEC_SEQ"]);//根据i行及列名获取值并存入node中
                    node.AddInt("BAND_ORDER", dtDataEdited.Rows[i]["BAND_ORDER"]);
                    node.AddString("INTERLOCK_FLAG", dtDataEdited.Rows[i]["INTERLOCK_FLAG"].ToString() == "True" ? "Y" : "N");
                    node.AddDouble("TARGET", dtDataEdited.Rows[i]["TARGET"]);
                    node.AddDouble("UHL", dtDataEdited.Rows[i]["UHL"]);
                    node.AddDouble("USL", dtDataEdited.Rows[i]["USL"]);
                    node.AddDouble("UCL", dtDataEdited.Rows[i]["UCL"]);
                    node.AddDouble("LCL", dtDataEdited.Rows[i]["LCL"]);
                    node.AddDouble("LSL", dtDataEdited.Rows[i]["LSL"]);
                    node.AddDouble("LHL", dtDataEdited.Rows[i]["LHL"]);
                    node.AddInt("START_SETTLING_TIME", dtDataEdited.Rows[i]["START_SETTLING_TIME"]);
                    node.AddInt("ACTIVATION_TIME", dtDataEdited.Rows[i]["ACTIVATION_TIME"]);
                    node.AddInt("FAULT_RULE_X", dtDataEdited.Rows[i]["FAULT_RULE_X"]);
                    node.AddInt("FAULT_RULE_Y", dtDataEdited.Rows[i]["FAULT_RULE_Y"]);
                    node.AddString("DRIFT_ENABLED_FLAG", dtDataEdited.Rows[i]["DRIFT_ENABLED_FLAG"].ToString() == "True" ? "Y" : "N");
                    node.AddString("SHIFT_ENABLED_FLAG", dtDataEdited.Rows[i]["SHIFT_ENABLED_FLAG"].ToString() == "True" ? "Y" : "N");
                    node.AddString("COMPOSITE", dtDataEdited.Rows[i]["COMPOSITE"]);
                    node.AddString("SPEC_DETAIL_DESC", dtDataEdited.Rows[i]["SPEC_DETAIL_DESC"]);
                    node.AddString("INPUT_TYPE", dtDataEdited.Rows[i]["INPUT_TYPE"]);
                    node.AddInt("END_SETTLING_TIME", dtDataEdited.Rows[i]["END_SETTLING_TIME"]);
                    node.AddString("UH_FAULT_LEVEL", dtDataEdited.Rows[i]["UH_FAULT_LEVEL"]);
                    node.AddString("US_FAULT_LEVEL", dtDataEdited.Rows[i]["US_FAULT_LEVEL"]);
                    node.AddString("UC_FAULT_LEVEL", dtDataEdited.Rows[i]["UC_FAULT_LEVEL"]);
                    node.AddString("LC_FAULT_LEVEL", dtDataEdited.Rows[i]["LC_FAULT_LEVEL"]);
                    node.AddString("LS_FAULT_LEVEL", dtDataEdited.Rows[i]["LS_FAULT_LEVEL"]);
                    node.AddString("LH_FAULT_LEVEL", dtDataEdited.Rows[i]["LH_FAULT_LEVEL"]);
                    node.AddString("OCAP_ENABLED_FLAG", dtDataEdited.Rows[i]["OCAP_ENABLED_FLAG"].ToString() == "True" ? "Y" : "N");
                }
            }
            return in_node;
        }

        private bool Update_Spec_Model_List()
        {
            try
            {
                if (gdcMultiSpec.DataSource == null)//无数据,直接返回true,避免调用时return,不给保存成功的提示
                {
                    return false;
                }

                TRSNode in_node = new TRSNode("UPDATE_DATA_LIST_IN");
                TRSNode out_node = new TRSNode("UPDATE_DATA_LIST_OUT");

                CommonRoutine.SetInMsg(in_node);
                int iSpecRawId = 0;
                if (CommonFunction.CheckValue(txtSpecRawId, CHECK_VALUE_TYPE.Numeric) == true&& Convert.ToInt32(txtSpecRawId.Text)>=0)
                {
                    iSpecRawId = Convert.ToInt32(txtSpecRawId.Text);
                }
                else
                {
                    CommonFunction.ShowMsgBox("SpecRawId必须是大于等于0的整数!");
                    return false;
                }
                //int iSpecRawId = txtSpecRawId.Text;
                in_node.AddInt("SPEC_RAWID", iSpecRawId);
                DataTable dtDataEdited = null;

                dtDataEdited = ((DataTable)gdcMultiSpec.DataSource).GetChanges(DataRowState.Added);//得到所有新增的行            //gdcData->gridControl
                if (dtDataEdited != null)
                {
                    //in_node = new TRSNode("UPDATE_INSPECTION_ITEM_IN");
                    in_node = FillUpdateRecords(in_node, dtDataEdited, false, GlobalConstant.SYS_STEP_CREATE);
                }

                //Modify record
                //因更改GCM表记录时,有可能会把主键也更新掉,所以没办法做UPDATE操作,只能先删后加
                //Server端也仅支持INSERT和DELETE,GlobalConstant.SYS_STEP_UPDATE直接转化为INSERT
                dtDataEdited = null;
                dtDataEdited = ((DataTable)gdcMultiSpec.DataSource).GetChanges(DataRowState.Modified);//得到所有修改过的行
                if (dtDataEdited != null)
                {
                    in_node = FillUpdateRecords(in_node, dtDataEdited, true, GlobalConstant.SYS_STEP_DELETE);
                    in_node = FillUpdateRecords(in_node, dtDataEdited, false, GlobalConstant.SYS_STEP_CREATE);
                }

                //Deleted record
                dtDataEdited = null;
                dtDataEdited = ((DataTable)gdcMultiSpec.DataSource).GetChanges(DataRowState.Deleted);//得到所有删除的行
                if (dtDataEdited != null)
                {
                    in_node = FillUpdateRecords(in_node, dtDataEdited, true, GlobalConstant.SYS_STEP_DELETE);
                    in_node.ProcStep = GlobalConstant.SYS_STEP_DELETE;
                }

                if (CommonRoutine.CallService("FDC", "FDC_Update_Trace_Spec_User_List", in_node, ref out_node) == false)
                {
                    return false;
                }

                //CommonRoutine.ShowSuccessMsg(out_node);

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

        #endregion

        private void btnCalculateSpec_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            saTableKeys = new string[] { GlobalVariable.gsFactory, txtSpecRawId.EditValue.ToString(), "RAW_ID", "Model_Group_Edit", saTableKeys[4], saTableKeys[5], saTableKeys[6], saTableKeys[7],"" };
            if (gluParaDisplayName.EditValue!=null&& gluParaDisplayName.EditValue.ToString() != "")
            {
                string sDisplayName = gluParaDisplayName.EditValue.ToString();
                saTableKeys.SetValue(sDisplayName, 8);
                frmFDCTranMTSpecCalculate frm = new frmFDCTranMTSpecCalculate("frmFDCTranMTSpecCalculate", saTableKeys);
                frm.ShowDialog();
            }
            else
            {
                CommonFunction.ShowMsgBox("ParaDisplayName: 此字段信息不能为空!");
            }
           
        }
    }
}

 

另:将某一列设置为CheckBox:

 dtResult.Columns.Add("DEFAULT_END_FLAG", typeof(Boolean));


  out_node.GetList(0)[i].GetString("DEFAULT_END_FLAG") == "Y",

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值