/// <summary> /// 刷新数据列表 /// </summary> private void RefreshGrid(CLDC_DataCore.Model.DnbModel.DnbGroupInfo MeterGroup, int CheckOrderID) { _DnbGroup = MeterGroup; int FirstYJMeter = Main.GetFirstYaoJianMeterIndex(MeterGroup); if (CheckOrderID >= MeterGroup.CheckPlan.Count || !(MeterGroup.CheckPlan[CheckOrderID] is StPlan_WcPoint)) { return; } StPlan_WcPoint _Item = (StPlan_WcPoint)MeterGroup.CheckPlan[CheckOrderID]; #region ---------------------动态创建数据表格样式------------------------------- if (_Item.ToString().IndexOf("FHC") != -1) { //带分合差列样式 if (Data_Error.Columns.Count != MeterGroup.WcCheckNumic + 7) //如果误差数据表格的列数大于默认列数,则需要删除大于部分 { for (int i = Data_Error.Columns.Count - 1; i >= 4; i--) { Data_Error.Columns.RemoveAt(i); } for (int i = 0; i < MeterGroup.WcCheckNumic; i++) { Data_Error.Columns.Add("Tmp_Col" + i.ToString(), "误差" + (i + 1).ToString()); } Data_Error.Columns.Add("Tmp_Pj", "平均值"); Data_Error.Columns.Add("Tmp_Hz", "化整值"); Data_Error.Columns.Add("Tmp_FhcRand", "差值上下限"); Data_Error.Columns.Add("Tmp_Fhc", "差值"); this.CreateColumnStyle(); //创建表格列样式 } } else if (_Item.ToString().IndexOf("标准偏差") == -1) //如果不是标准偏差 { //普通误差样式 if (Data_Error.Columns.Count != MeterGroup.WcCheckNumic + 6) //如果误差数据表格的列数大于默认列数,则需要删除大于部分 { for (int i = Data_Error.Columns.Count - 1; i >= 4; i--) { Data_Error.Columns.RemoveAt(i); } for (int i = 0; i < MeterGroup.WcCheckNumic; i++) { Data_Error.Columns.Add("Tmp_Col" + i.ToString(), "误差" + (i + 1).ToString()); } Data_Error.Columns.Add("Tmp_Pj", "平均值"); Data_Error.Columns.Add("Tmp_Hz", "化整值"); this.CreateColumnStyle(); //创建表格列样式 } } else { //偏差表格样式 if (Data_Error.Columns.Count != MeterGroup.PcCheckNumic + 6) //如果误差数据表格的列数大于默认列数,则需要删除大于部分 { for (int i = Data_Error.Columns.Count - 1; i >= 4; i--) { Data_Error.Columns.RemoveAt(i); } for (int i = 0; i < MeterGroup.PcCheckNumic; i++) { Data_Error.Columns.Add("Tmp_Col" + i.ToString(), "误差" + (i + 1).ToString()); } Data_Error.Columns.Add("Tmp_Pj", "偏差值"); Data_Error.Columns.Add("Tmp_Hz", "化整值"); this.CreateColumnStyle(); //创建表格列样式 } } #endregion for (int i = 0; i < MeterGroup.MeterGroup.Count; i++) { CLDC_DataCore.Model.DnbModel.DnbInfo.MeterBasicInfo _MeterInfo = MeterGroup.MeterGroup[i]; DataGridViewRow Row = Data_Error.Rows[i]; Row.Cells[1].Value = _MeterInfo.ToString(); //插入表位号 if (!_MeterInfo.YaoJianYn) //如果不检 { Row.Cells[0].Value = false; if (_MeterInfo.Mb_chrBcs == String.Empty || _MeterInfo.Mb_chrBdj == String.Empty) //如果不检,并且常数或者等级都为空,则将勾选单元格设置为只读 { Row.Cells[0].ReadOnly = true; } for (int j = 2; j < Row.Cells.Count; j++) { Row.Cells[j].Value = string.Empty; } continue; } //if (_MeterInfo.Mb_chrResult == CLDC_DataCore.Const.Variable.CTG_BuHeGe) //{ // Row.HeaderCell.Style.ForeColor = CLDC_DataCore.Const.Variable.Color_Grid_BuHeGe; //} //else //{ // Row.HeaderCell.Style.ForeColor = CLDC_DataCore.Const.Variable.Color_Grid_Normal; //} Row.Cells[0].Value = true; string _Key = _Item.PrjID; if (_MeterInfo.MeterErrors.ContainsKey(_Key)) //如果数据模型中已经存在该点的数据 { #region try { if (_MeterInfo.MeterErrors[_Key].Me_chrWcJl == CLDC_DataCore.Const.Variable.CTG_BuHeGe) //如果不合格修改当前行背景颜色为红色 { Row.DefaultCellStyle.ForeColor = CLDC_DataCore.Const.Variable.Color_Grid_BuHeGe; foreach (DataGridViewCell cell in Row.Cells) { cell.ToolTipText = _MeterInfo.MeterErrors[_Key].AVR_DIS_REASON; } } else { Row.DefaultCellStyle.ForeColor = Color.Black; foreach (DataGridViewCell cell in Row.Cells) { cell.ToolTipText = string.Empty; } } } catch { } try { string[] Arr_WcLimit = _MeterInfo.MeterErrors[_Key].Me_WcLimit.Split('|'); //分解误差限 if (Arr_WcLimit.Length == 2) { Row.Cells[2].Value = string.Format("{0} {1}", Arr_WcLimit[0], Arr_WcLimit[1]); //项目误差限 } else { Row.Cells[2].Value = ""; } } catch { } try { Row.Cells[3].Value = _MeterInfo.MeterErrors[_Key].Me_chrWcJl; } catch { } try { string[] Arr_Err = _MeterInfo.MeterErrors[_Key].Me_chrWcMore.Split('|'); //分解误差 if (Arr_Err.Length == -1) { continue; } for (int j = 0; j < Arr_Err.Length; j++) { if (Data_Error.Columns.Count <= j + 4) { break; //如果列数小于当前误差数,则自动退出 } Row.Cells[j + 4].Value = Arr_Err[j]; } } catch { } try { if (_Item.Dif_Err_Flag == 1) { Row.Cells[8].Value = _MeterInfo.MeterErrors[_Key].AVR_UPPER_LIMIT + " " + _MeterInfo.MeterErrors[_Key].AVR_LOWER_LIMIT; Row.Cells[9].Value = _MeterInfo.MeterErrors[_Key].AVR_DIF_ERR_AVG;//AVR_DIF_ERR_AVG } } catch { } #endregion } else { //Row.DefaultCellStyle.ForeColor = Color.Black; for (int j = 2; j < Data_Error.Columns.Count; j++) { Row.Cells[j].Value = ""; } } if (_MeterInfo.Mb_Result == CLDC_DataCore.Const.Variable.CTG_BuHeGe) { Row.DefaultCellStyle.ForeColor = Color.Red; } else { Row.DefaultCellStyle.ForeColor = Color.Black; } } }
private void CreateFaInfo() { Cmb_xIb.Text = _DnbGroup.CzIb; Txt_Qs.Text = _DnbGroup.CzQs.ToString(); Cmb_WcLimit.Text = _DnbGroup.CzWcLimit; Txt_Down.Text = (_DnbGroup.WcxDownPercent * 100).ToString(); Txt_Up.Text = (_DnbGroup.WcxUpPercent * 100).ToString(); _WcLimitName = _DnbGroup.CzWcLimit; _xIb = _DnbGroup.CzIb; _Qs = _DnbGroup.CzQs; int _FirstYaoJian = CLDC_MeterUI.UI_Detection_New.Main.GetFirstYaoJianMeterIndex(_DnbGroup); CLDC_DataCore.Model.DnbModel.DnbInfo.MeterBasicInfo _MeterInfo = _DnbGroup.MeterGroup[_FirstYaoJian]; _FirstConst = _MeterInfo.Mb_chrBcs; _FirstIb = _MeterInfo.Mb_chrIb; _FirstDj = _MeterInfo.Mb_chrBdj; _FirstGuiCheng = _MeterInfo.GuiChengName; _FirstHgq = _MeterInfo.Mb_BlnHgq; _MeterInfo = null; for (int i = 0; i < _DnbGroup.CheckPlan.Count; i++) { if (!(_DnbGroup.CheckPlan[i] is StPlan_WcPoint)) { continue; //如果不是误差则跳出 } StPlan_WcPoint _Item = (StPlan_WcPoint)_DnbGroup.CheckPlan[i]; if (_Item.Pc == 1) { continue; //如果是偏差则跳出 } int _RowIndex = Dgv_Wc.Rows.Add(); Dgv_Wc.Rows[_RowIndex].HeaderCell.Value = _Item.ToString(); //方案项目描述 Dgv_Wc.Rows[_RowIndex].Tag = i; //检定序号 } int _ThreadSum = (int)((int)Dgv_Wc.Rows.Count / 10) + 1; //归纳需要多少个线程来进行处理,固定一个线程最多处理10行数据 for (int i = 0; i < _ThreadSum; i++) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(CheckQs), i * 10); //计算圈数 System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(CheckWcLimit), i * 10); //计算误差限 } AsyncOpDone.WaitOne(); }