/// <summary> /// Разбор типоразмера /// </summary> private void parseTypeSize(string description) { try { string[] parameters = description.TrimStart('T' /*EN*/, 'Т' /*RU*/).Split('-'); PenCode = parameters[0]; // до ввода фиброцементного типа проходок FlangesType = int.Parse(parameters[0]); DiameterTypeStr = new DiameterType(int.Parse(parameters[1])).ToString(); LengthCm = int.Parse(parameters[2]); } catch (Exception) { ErrorText = $"Не удалось разобрать типоразмер \"{description}\""; } }
public List <DiameterType> getDiameters(long flangesTypeIndex) { var dataRows = data_.AsEnumerable(). Where(x => projId_ != 0 ? x.Field <long>("prjID") == projId_ : x.Field <long>("depID") == depId_). Where(x => x.Field <long>("flanNumber") == flangesTypeIndex). OrderBy(x => x.Field <long>("diamNumber")). ThenByDescending(x => x.Field <float>("pipeDiam")). ThenByDescending(x => x.Field <float>("pipeThick")); Logger.Log.Debug($"для projId='{projId_}' и depId='{depId_}' найдено {dataRows.Count()} типоразмеров"); var list = new List <DiameterType>(); foreach (DataRow dataRow in dataRows) { var diamType = new DiameterType( dataRow.Field <long>("diamNumber"), dataRow.Field <float>("pipeDiam"), dataRow.Field <float>("pipeThick")); list.Add(diamType); } return(list); }
private void rowsAdded_(IEnumerable <DataGridViewRow> rows) { foreach (var row in rows) { var comboCell = row.Cells[GroupByTaskModel.FieldName.DIAMETER] as DataGridViewComboBoxCell; PenetrVueTask task = groupModel_.GetTask(row.GetDataRow()); if (task == null) { continue; } IList <DiameterType> diameters = groupModel_.getDiametersList(task); var diamStrList = new List <string>(); DiameterType matchValue = null; foreach (DiameterType diamType in diameters) { if (diamType.Equals(task.DiameterType)) { matchValue = diamType; Logger.Log.Debug( $"Найден диаметр в таблице диаметров: {diamType}" + $" для задания '{task}'"); } diamStrList.Add(diamType.ToString()); } comboCell.DataSource = diamStrList; if (matchValue != null) { Logger.Log.Debug($"Установка диаметра: {matchValue}"); comboCell.Value = matchValue.ToString(); } else { Logger.Log.Debug( $"невалиное значение диаметра '{task.DiameterType}'" + $" для задания '{task}'" + $"\n валидные занчения: {diameters.ToStringEx()}"); comboCell.ErrorText = "невалидное значение диаметра"; } DataRow dataRow = row.GetDataRow(); if (!dataRow.HasErrors && !dataRow.AnyColumnHasError()) { dataRow.SetField(GroupByTaskModel.FieldName.STATUS, "OK"); } else { dataRow.SetField(GroupByTaskModel.FieldName.STATUS, "ERROR"); } } UpdateRowsStylesByStatus(); try { var tabCtrl = form_.tabCtrlMain; if (tabCtrl.SelectedTab.Name != "tabGroupByTask") { tabCtrl.SelectedTab = tabCtrl.TabPages["tabGroupByTask"]; form_.Refresh(); } } catch (Exception) { } }