public virtual void AddPutParameter(HandlerDbTaskCalculate.PUT_PARAMETER putPar) { if (m_dictNAlgProperties.ContainsKey(putPar.m_idNAlg) == true) { if (m_dictNAlgProperties[putPar.m_idNAlg].m_dictPutParameters == null) { m_dictNAlgProperties[putPar.m_idNAlg].m_dictPutParameters = new Dictionary <int, HandlerDbTaskCalculate.PUT_PARAMETER>(); } else { ; } if (m_dictNAlgProperties[putPar.m_idNAlg].m_dictPutParameters.ContainsKey(putPar.m_Id) == false) { m_dictNAlgProperties[putPar.m_idNAlg].m_dictPutParameters.Add(putPar.m_Id, putPar); } else { ; } } else { ; } }
/// <summary> /// Обработчик события - добавить Put-параметр /// </summary> /// <param name="obj">Объект - Put-параметр(дополнительный, в составе NAlg, элемент алгоритма расчета)</param> protected override void handlerDbTaskCalculate_onAddPutParameter(HandlerDbTaskCalculate.PUT_PARAMETER obj) { base.handlerDbTaskCalculate_onAddPutParameter(obj); m_dgvValues.AddPutParameter(obj); m_dgvValues.AddColumn(obj); }
/// <summary> /// Обработчик события - добавить Put-параметр /// </summary> /// <param name="obj">Объект - Put-параметр(дополнительный, в составе NAlg, элемент алгоритма расчета)</param> protected override void handlerDbTaskCalculate_onAddPutParameter(HandlerDbTaskCalculate.PUT_PARAMETER obj) { base.handlerDbTaskCalculate_onAddPutParameter(obj); m_listDataGridViewVedomostBl.ForEach(dgv => { dgv.AddPutParameter(obj); }); }
public override void AddPutParameter(HandlerDbTaskCalculate.PUT_PARAMETER putPar) { base.AddPutParameter(putPar); if (m_dictTECComponent.ContainsKey(putPar.IdComponent) == false) { m_dictTECComponent.Add(putPar.IdComponent, putPar.m_component); } else { ; } }
protected override void handlerDbTaskCalculate_onAddPutParameter(HandlerDbTaskCalculate.PUT_PARAMETER obj) { throw new NotImplementedException(); }
/// <summary> /// Добавить столбец /// </summary> /// <param name="id_comp">номер компонента</param> /// <param name="txtHeader">заголовок столбца</param> /// <param name="nameCol">имя столбца</param> /// <param name="bRead">"только чтение"</param> /// <param name="bVisibled">видимость столбца</param> public void AddColumn(HandlerDbTaskCalculate.PUT_PARAMETER putPar) { int indxCol = -1; // индекс столбца при вставке DataGridViewContentAlignment alignText = DataGridViewContentAlignment.NotSet; DataGridViewAutoSizeColumnMode autoSzColMode = DataGridViewAutoSizeColumnMode.NotSet; try { // найти индекс нового столбца // столбец для станции - всегда крайний foreach (DataGridViewColumn col in Columns) { if ((((HandlerDbTaskCalculate.PUT_PARAMETER)col.Tag).IdComponent > 0) && (((HandlerDbTaskCalculate.PUT_PARAMETER)col.Tag).m_component.IsTec == true)) { indxCol = Columns.IndexOf(col); break; } else { ; } } DataGridViewColumn column = new DataGridViewTextBoxColumn(); column.Tag = putPar; alignText = DataGridViewContentAlignment.MiddleRight; autoSzColMode = DataGridViewAutoSizeColumnMode.Fill; if (!(indxCol < 0)) // для вставляемых столбцов (компонентов ТЭЦ) { ; // оставить значения по умолчанию } else { // для добавляемых столбцов if (putPar.IdComponent < 0) { // для служебных столбцов if (putPar.m_bVisibled == true) // только для столбца с [SYMBOL] { alignText = DataGridViewContentAlignment.MiddleLeft; autoSzColMode = DataGridViewAutoSizeColumnMode.AllCells; } else { ; } column.Frozen = true; } else { ; } } column.HeaderText = putPar.NameShrComponent; column.ReadOnly = putPar.m_bEnabled; column.Name = @"???"; column.DefaultCellStyle.Alignment = alignText; column.AutoSizeMode = autoSzColMode; column.Visible = putPar.m_bVisibled; if (!(indxCol < 0)) { Columns.Insert(indxCol, column as DataGridViewTextBoxColumn); } else { Columns.Add(column as DataGridViewTextBoxColumn); } } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"DataGridViewTReaktivka::AddColumn (id_comp={0}) - ...", putPar.IdComponent), Logging.INDEX_MESSAGE.NOT_SET); } }
///// <summary> ///// Сформировать списки строк, содержащих параметры для указанной таблицы (входной и выходной) ///// </summary> ///// <param name=""></param> //public void getTableNalg(DataTable tableInNAlg, DataTable tableOutNAlg, DataTable tableComp, Dictionary<int, object[]> dict_profile) //{ // List<DataRow> col_in = new List<DataRow>(); // List<DataRow> col_out = new List<DataRow>(); // switch (m_ViewValues) // { // case INDEX_VIEW_VALUES.Block: // rows = tableComp.Select("ID_COMP=1000 or ID_COMP=1"); // break; // case INDEX_VIEW_VALUES.Output: // //colums_in = nAlgTable.Select("N_ALG='2'"); // //colums_out = nAlgOutTable.Select("N_ALG='2'"); // rows = tableComp.Select("ID_COMP=2000 or ID_COMP=1"); // break; // case INDEX_VIEW_VALUES.TeploBL: // //colums_in = nAlgTable.Select("N_ALG='3'"); // //colums_out = nAlgOutTable.Select("N_ALG='3'"); // rows = tableComp.Select("ID_COMP=1"); // break; // case INDEX_VIEW_VALUES.TeploOP: // //colums_in = nAlgTable.Select("N_ALG='4'"); // //colums_out = nAlgOutTable.Select("N_ALG='4'"); // rows = tableComp.Select("ID_COMP=1"); // break; // case INDEX_VIEW_VALUES.Param: // //colums_in = nAlgTable.Select("N_ALG='5'"); // //colums_out = nAlgOutTable.Select("N_ALG='5'"); // rows = tableComp.Select("ID_COMP=1"); // break; // case INDEX_VIEW_VALUES.PromPlozsh: // //colums_in = nAlgTable.Select("N_ALG='6'"); // //colums_out = nAlgOutTable.Select("N_ALG='6'"); // rows = tableComp.Select("ID_COMP=3000 or ID_COMP=1"); // break; // default: // //colums_in = nAlgTable.Select(); // //colums_out = nAlgOutTable.Select(); // rows = tableComp.Select(); // break; // } // foreach (object[] list in dict_profile[(int)m_ViewValues]) // { // if ((TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE)list[1] == TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE.IN_VALUES) // { // m_dict_ProfileNALG_IN = (Dictionary<string, HTepUsers.DictionaryProfileItem>)list[2]; // foreach (Double id in (double[])list[0]) // col_in.Add(tableInNAlg.Select("N_ALG='" + id.ToString().Trim().Replace(',', '.') + "'")[0]); // } // else // { } // if ((TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE)list[1] == TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE.OUT_VALUES) // { // m_dict_ProfileNALG_OUT = (Dictionary<string, HTepUsers.DictionaryProfileItem>)list[2]; // foreach (Double id in (double[])list[0]) // col_out.Add(tableOutNAlg.Select("N_ALG='" + id.ToString().Trim().Replace(',', '.') + "'")[0]); // } // else // { } // } // colums_in = col_in.ToArray(); // colums_out = col_out.ToArray(); //} /// <summary> /// Инициализация dataGridView /// </summary> /// <param name="tableInNAlg"></param> /// <param name="tableOutNAlg"></param> /// <param name="tableComp"></param> /// <returns></returns> public void InitializeStruct(List <HandlerDbTaskCalculate.NALG_PARAMETER> listNAlg, List <HandlerDbTaskCalculate.PUT_PARAMETER> listPut, Dictionary <int, object[]> dict_profile /*DataTable tableInNAlg, DataTable tableOutNAlg, DataTable tableComp, DataTable tableRatio * , List<HandlerDbTaskCalculate.PUT_PARAMETER> listPutParemeters*/) { this.CellValueChanged -= new DataGridViewCellEventHandler(cellEndEdit); this.Rows.Clear(); this.Columns.Clear(); DataTable tableNAlg = new DataTable(); //DataRow[] colums_in = null; //DataRow[] colums_out = null; //DataRow[] rows = null; List <HandlerDbTaskCalculate.NALG_PARAMETER> col_in = new List <HandlerDbTaskCalculate.NALG_PARAMETER>(); List <HandlerDbTaskCalculate.NALG_PARAMETER> col_out = new List <HandlerDbTaskCalculate.NALG_PARAMETER>(); //m_dbRatio = tableRatio.Copy(); int indx; TepCommon.HandlerDbTaskCalculate.PUT_PARAMETER putPar = new HandlerDbTaskCalculate.PUT_PARAMETER(); // получить список ID из таблицы inval, для размещения в TAG столбцов и ячеек ??? foreach (object[] list in dict_profile[(int)m_ViewValues]) { if ((TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE)list[1] == TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE.IN_VALUES) { m_dict_ProfileNALG_IN = (Dictionary <string, HTepUsers.DictionaryProfileItem>)list[2]; foreach (Double id in (double[])list[0]) { col_in.Add(listNAlg.Find(x => x.m_nAlg == id.ToString().Trim().Replace(',', '.'))); //listNAlg.Select("N_ALG='" + id.ToString().Trim().Replace(',', '.') + "'")[0]); } //col_in.Add(tableInNAlg.Select("N_ALG='" + id.ToString().Trim().Replace(',', '.') + "'")[0]); } } else { } if ((TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE)list[1] == TepCommon.HandlerDbTaskCalculate.TaskCalculate.TYPE.OUT_VALUES) { m_dict_ProfileNALG_OUT = (Dictionary <string, HTepUsers.DictionaryProfileItem>)list[2]; foreach (Double id in (double[])list[0]) { col_out.Add(listNAlg.Find(x => x.m_nAlg == id.ToString().Trim().Replace(',', '.'))); //Select("N_ALG='" + id.ToString().Trim().Replace(',', '.') + "'")[0]); } //col_out.Add(tableOutNAlg.Select("N_ALG='" + id.ToString().Trim().Replace(',', '.') + "'")[0]); } } else { } string a = listNAlg[0].m_nAlg; int p = listPut[0].m_Id; } indx = 0; this.AddColumn("Компонент", true, "Comp"); //foreach (DataRow c in colums_in) for (int ind = 0; ind < col_in.Count(); ind++) { putPar = new HandlerDbTaskCalculate.PUT_PARAMETER();; putPar.m_Id = m_put_params_in[indx]; putPar.m_idNAlg = (Int32)(col_in[ind].m_Id); this.AddColumn(col_in[ind].m_nAlg.Trim(), true, col_in[ind].m_nAlg.Trim(), (col_in[ind].m_Id).ToString(), true, (Int32)(col_in[ind].m_Id), putPar); //(c["NAME_SHR"].ToString().Trim(), true, c["NAME_SHR"].ToString().Trim(), (c["N_ALG"]).ToString(), true, (Int32)c[0], putPar); indx++; } indx = 0; //foreach (DataRow c in colums_out) for (int ind = 0; ind < col_out.Count(); ind++) { putPar = new HandlerDbTaskCalculate.PUT_PARAMETER(); putPar.m_Id = m_put_params_out[indx]; putPar.m_idNAlg = (Int32)(col_out[ind].m_Id); this.AddColumn(col_out[ind].m_nAlg.Trim(), true, col_out[ind].m_nAlg.Trim(), (col_out[ind].m_Id).ToString(), true, (Int32)(col_out[ind].m_Id), putPar); //this.AddColumn(c["NAME_SHR"].ToString().Trim(), true, c["NAME_SHR"].ToString().Trim(), (c["N_ALG"]).ToString(), false, (Int32)c[0], putPar); } // получить список putParametrs для текущего грида #region закомментированный участок //int rowInd = 0; ////foreach (DataRow r in rows) //for (int ind = 0; ind < listPut.Count(); ind++) //{ // this.Rows.Add(new object[this.ColumnCount]); // this.Rows[Rows.Count - 1].Cells[0].Value = listPut[ind].NameShrComponent.ToString().Trim();//.["DESCRIPTION"].ToString().Trim(); // this.Rows[Rows.Count - 1].HeaderCell.Value = listPut[ind].m_Id;//r["ID"]; // for (int i = 0; i < r.ItemArray.Count(); i++) // ??? // { // //if () // this.Rows[rowInd].Cells[ind].Tag = listPut[ind].m_Id; // } // rowInd++; //} //if (Rows.Count > 1) //{ // //Rows.RemoveAt(0); // this.Rows.Add(); // this.Rows[Rows.Count - 1].Cells[0].Value = "Итого"; // this.Rows[Rows.Count - 1].HeaderCell.Value = listPut[0].m_Id;// rows[0]["ID"].ToString().Trim(); //} //else //{ } #endregion try { throw new Exception("Ошибка сборки"); } catch (Exception e) { Logging.Logg().Exception(e, @"Исключение произошло т.к. закомментированный код выше препятствует сборке", Logging.INDEX_MESSAGE.NOT_SET); } this.CellValueChanged += new DataGridViewCellEventHandler(cellEndEdit); }
/// <summary> /// Заполнение датагрида /// </summary> /// <param name="inValues">Список входных значений</param> /// <param name="outValues">Список выходных значений</param> public void ShowValues(IEnumerable <HandlerDbTaskCalculate.VALUE> inValues , IEnumerable <HandlerDbTaskCalculate.VALUE> outValues) { int idAlg = -1 , idPut = -1 , idPutCell = -1 , iCol = 0; float fltVal = -1F, fltColumnAgregateValue = 0; AGREGATE_ACTION columnAction = AGREGATE_ACTION.UNKNOWN; HandlerDbTaskCalculate.IPUT_PARAMETERChange putPar = new HandlerDbTaskCalculate.PUT_PARAMETER(); IEnumerable <HandlerDbTaskCalculate.VALUE> columnValues = null; IEnumerable <HandlerDbTaskCalculate.VALUE> cellValues = null; DataGridViewRow row; #region делегат для поиска значений во входных аргументах (для столбца; для ячейки) Func <HandlerDbTaskCalculate.VALUE, int, bool> get_values = (HandlerDbTaskCalculate.VALUE value, int id_put) => { return((value.m_IdPut == id_put) && (((value.stamp_value - DateTime.MinValue).TotalDays > 0) || ((!((value.stamp_value - DateTime.MinValue).TotalDays > 0))) )); }; #endregion #region делегат для отображения значений с попутной установкой значений свойств ячейки, локальных переменных Action <DataGridViewCell, HandlerDbTaskCalculate.VALUE, AGREGATE_ACTION> show_value = (DataGridViewCell cell, HandlerDbTaskCalculate.VALUE value, AGREGATE_ACTION c_action) => { fltVal = value.value; if ((c_action == AGREGATE_ACTION.UNKNOWN)) { fltColumnAgregateValue += fltVal; } else { ; } //cell.Tag = new CELL_PROPERTY() { m_Value = fltVal, m_iQuality = value.m_iQuality }; cell.ReadOnly = Columns[iCol].ReadOnly || double.IsNaN(fltVal); // отобразить с количеством знаков в соответствии с настройками cell.Value = fltVal; cell.ToolTipText = fltVal.ToString(); }; #endregion // Т.к. предполагается, что в наличии минимальный набор: "строка с данными" + "итоговая строка" if (RowCount > 1) { // отменить обработку события - изменение значения в ячейке представления //activateCellValue_onChanged(false); // возможно, цикл по строкам? foreach (DataGridViewColumn col in Columns) { iCol = col.Index; fltColumnAgregateValue = 0F; try { // получаем id колонки, по логике = id станции putPar = (HandlerDbTaskCalculate.PUT_PARAMETER)((COLUMN_TAG)col.Tag).value; idPut = putPar.m_Id; // все значения, относящиеся к выбранному id (общестанц.) ??? перенести columnValues = inValues.Where(value => get_values(value, idPut)); columnValues = columnValues.Union(outValues.Where(value => get_values(value, idPut))); idAlg = putPar.m_idNAlg; // получить тип действия над переменной (суммирование/усреднение) columnAction = ((COLUMN_TAG)col.Tag).ActionAgregateCancel == true ? AGREGATE_ACTION.UNKNOWN : getColumnAction(idAlg); for (int ind = 0; ind < Rows.Count - 1; ind++) // исключая строку "Итого" { row = Rows[ind]; // id параметра для конкретной ТГ idPutCell = (Int32)row.Cells[iCol].Tag; // все значения, относящиеся к выбранному id (конкр. оборуд.) cellValues = inValues.Where(value => get_values(value, idPutCell)); cellValues = columnValues.Union(outValues.Where(value => get_values(value, idPutCell))); if (columnValues.Count() > 0) { // есть значение хотя бы для одной строки foreach (HandlerDbTaskCalculate.VALUE value in cellValues) { show_value(row.Cells[iCol], value, columnAction); } } else { // нет значений ни для одной строки Logging.Logg().Error(string.Format(@"DataGridViewValues::ShowValues () - нет строк для отображения..."), Logging.INDEX_MESSAGE.NOT_SET); } } // вывод суммарных значений (строка "Итого") ??? необходим отдельный метод для усреднения, зачем??? if ((fltColumnAgregateValue > float.MinValue) && (!(columnAction == AGREGATE_ACTION.UNKNOWN))) { Rows[Rows.Count - 1].Cells[iCol].Value = columnAction == AGREGATE_ACTION.SUMMA ? fltColumnAgregateValue : fltColumnAgregateValue / (Rows.Count - 1); } else { ; } } catch (Exception e) { Logging.Logg().Exception(e, @"DataGridViewValues::ShowValues () - ...", Logging.INDEX_MESSAGE.NOT_SET); } } // восстановить обработку события - изменение значение в ячейке //activateCellValue_onChanged(true); } else { Logging.Logg().Error(string.Format(@"DataGridViewValues::ShowValues () - нет строк для отображения..."), Logging.INDEX_MESSAGE.NOT_SET); } }