private List <AttributeValidationData> GetValidationData() { List <AttributeValidationData> toReturn = new List <AttributeValidationData>(); TextReader validationFileReader = LoadValidationFile(); string attributeRow; while ((attributeRow = validationFileReader.ReadLine()) != null) { string[] attributeCells = attributeRow.Split('\t'); string name = attributeCells[0]; double min; double max; if (!double.TryParse(attributeCells[1], out min)) { min = double.NaN; } if (!double.TryParse(attributeCells[2], out max)) { max = double.NaN; } AttributeValidationData toAdd = new AttributeValidationData(name, min, max); toReturn.Add(toAdd); } validationFileReader.Close(); return(toReturn); }
private void ValidateColumn(DataGridViewColumn columnToCheck, AttributeValidationData range) { foreach (DataGridViewRow rowToCheck in dgvAttributeView.Rows) { DataGridViewCell cellToCheck = rowToCheck.Cells[columnToCheck.Name]; double cellValue; if (double.TryParse(cellToCheck.Value.ToString(), out cellValue)) { if (cellValue > range.Max || cellValue < range.Min) { cellToCheck.Style.BackColor = Color.Red; } else { cellToCheck.Style.BackColor = SystemColors.Window; } } } }
private void UpdateValidation() { Regex yearStripper = new Regex(@".*(?=_[0-9][0-9][0-9][0-9]$)"); List <AttributeValidationData> attributesWithValidation = GetValidationData(); foreach (DataGridViewColumn columnToCheck in dgvAttributeView.Columns) { string columnName = columnToCheck.HeaderText; string attributeName = yearStripper.Match(columnName).ToString(); if (attributeName == "") { attributeName = columnName; } AttributeValidationData range = attributesWithValidation.Find(delegate(AttributeValidationData a) { return(a.Name == attributeName); }); if (range != null) { ValidateColumn(columnToCheck, range); } } }
private void LoadLimits() { TextReader validationFileReader = LoadFile(); List <string> numericAttributes = GetNumericAtributes(); List <AttributeValidationData> validationLimits = new List <AttributeValidationData>(); List <string> missingAttributes = new List <string>(); string attributeRow; dataGridView1.CellValueChanged -= new DataGridViewCellEventHandler(dataGridView1_CellValueChanged); while ((attributeRow = validationFileReader.ReadLine()) != null) { string[] attributeCells = attributeRow.Split('\t'); string name = attributeCells[0].Trim(); if (numericAttributes.Contains(name)) { double min; double max; if (!double.TryParse(attributeCells[1], out min)) { min = double.NaN; } if (!double.TryParse(attributeCells[2], out max)) { max = double.NaN; } AttributeValidationData toAdd = new AttributeValidationData(name, min, max); validationLimits.Add(toAdd); } //else //{ //used to be an attribute, not any more, should probably just ignore this case //} } foreach (string numericAttribute in numericAttributes) { dataGridView1.Rows.Add(); DataGridViewRow justAdded = dataGridView1.Rows[dataGridView1.Rows.Count - 1]; AttributeValidationData attributeLimits = validationLimits.Find(delegate(AttributeValidationData a) { return(a.Name.Trim() == numericAttribute.Trim()); }); if (attributeLimits != null) { justAdded.Cells["ColumnAttribute"].Value = attributeLimits.Name; if (!double.IsNaN(attributeLimits.Min)) { justAdded.Cells["ColumnMin"].Value = attributeLimits.Min; } if (!double.IsNaN(attributeLimits.Max)) { justAdded.Cells["ColumnMax"].Value = attributeLimits.Max; } } else { justAdded.Cells["ColumnAttribute"].Value = numericAttribute; } } dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged); validationFileReader.Close(); }