/// <summary> /// Setup the grid as a water grid. /// </summary> private void AddCropColumns() { Color[] CropColors = { Color.FromArgb(173, 221, 142), Color.FromArgb(247, 252, 185) }; Color[] PredictedCropColors = { Color.FromArgb(233, 191, 255), Color.FromArgb(244, 226, 255) }; // DataGridViewColumn SAT = Grid.Columns["SAT\r\n(mm/mm)"]; // SAT.Frozen = true; Grid.Columns[Grid.ColumnCount - 1].Frozen = true; int CropIndex = 0; int PredictedCropIndex = 0; foreach (string CropName in Soil.CropNames.Union(Soil.PredictedCropNames, StringComparer.OrdinalIgnoreCase)) { SoilCrop Crop = Soil.Crop(CropName); bool IsReadonly; Color CropColour; Color ForeColour = Color.Black; if (Crop.LLMetadata != null && Crop.LLMetadata.First() == "Estimated") { CropColour = PredictedCropColors[PredictedCropIndex]; ForeColour = Color.Gray; IsReadonly = true; PredictedCropIndex++; if (PredictedCropIndex >= PredictedCropColors.Length) { PredictedCropIndex = 0; } } else { CropColour = CropColors[CropIndex]; IsReadonly = false; CropIndex++; if (CropIndex >= CropColors.Length) { CropIndex = 0; } } double[] PAWCmm = MathUtility.Multiply(Soil.PAWCCropAtWaterThickness(CropName), Soil.Water.Thickness); DataGridViewColumn LL = GridUtility.AddColumn(Grid, CropName + " LL\r\n(mm/mm)", Crop.LL, "f3", CropColour, ForeColour, ToolTips: Crop.LLMetadata, ReadOnly: IsReadonly); DataGridViewColumn PAWC = GridUtility.AddColumn(Grid, CropName + " PAWC\r\n", PAWCmm, "f1", CropColour, Color.Gray, ReadOnly: true, ToolTips: StringManip.CreateStringArray("Calculated from crop LL and DUL", PAWCmm.Length)); DataGridViewColumn KL = GridUtility.AddColumn(Grid, CropName + " KL\r\n(/day)", Crop.KL, "f2", CropColour, ForeColour, ToolTips: Crop.KLMetadata, ReadOnly: IsReadonly); DataGridViewColumn XF = GridUtility.AddColumn(Grid, CropName + " XF\r\n(0-1)", Crop.XF, "f1", CropColour, ForeColour, ToolTips: Crop.XFMetadata, ReadOnly: IsReadonly); PAWC.ToolTipText = "Calculated from crop LL and DUL"; PAWC.ReadOnly = true; UpdateTotal(PAWC); } }
/// <summary> /// Set a column to the specified Value a specificed numebr of times. /// </summary> private static void SetStringValue(DataTable Table, string ColumnName, string Value, int StartRow, int NumValues) { string[] Values = StringManip.CreateStringArray(Value, NumValues); SetStringValues(Table, ColumnName, Values, StartRow); }