Skip to content

Commit

Permalink
Merge pull request #8861 from par456/8856TreeProxyTableFix
Browse files Browse the repository at this point in the history
8856 Fixes date crash from TreeProxy table
  • Loading branch information
hol353 committed Apr 30, 2024
2 parents 3316b8d + 98b3f17 commit 7449c36
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
29 changes: 27 additions & 2 deletions APSIM.Shared/Utilities/DataTableUtilities.cs
Expand Up @@ -396,6 +396,30 @@ static public string[] GetColumnAsStrings(DataView view, string columnName)
return values;
}

/// <summary>
/// Get a column as dates.
/// </summary>
/// <param name="table">The data table that contains the data required</param>
/// <param name="columnName">The name of the Date Column</param>
/// <param name="numValues"></param>
/// <param name="startRow"></param>
/// <returns>An array of dates</returns>
static public DateTime[] GetColumnAsDates(DataTable table, string columnName, int numValues, int startRow)
{
DateTime[] values = new DateTime[numValues];
int index = 0;
for (int row = startRow; row < table.Rows.Count && index < numValues; row++)
{
string date = DateUtilities.ValidateDateString(table.Rows[row][columnName].ToString());
if (date == null)
values[index] = DateTime.MinValue;
else
values[index] = DateUtilities.GetDate(date);
index++;
}
return values;
}

/// <summary>
/// Get a column as dates.
/// </summary>
Expand All @@ -407,10 +431,11 @@ static public DateTime[] GetColumnAsDates(DataTable table, string columnName)
DateTime[] values = new DateTime[table.Rows.Count];
for (int row = 0; row != table.Rows.Count; row++)
{
if (Convert.IsDBNull(table.Rows[row][columnName]))
string date = DateUtilities.ValidateDateString(table.Rows[row][columnName].ToString());
if (date == null)
values[row] = DateTime.MinValue;
else
values[row] = Convert.ToDateTime(table.Rows[row][columnName], CultureInfo.InvariantCulture);
values[row] = DateUtilities.GetDate(date);
}
return values;
}
Expand Down
4 changes: 2 additions & 2 deletions Models/Utilities/GridTableColumn.cs
Expand Up @@ -202,10 +202,10 @@ public void Set(DataTable data, bool hasUnits)
string[] modifiedMetadata = SoilUtilities.DetermineMetadata(original, originalMetadata, modified, null);
metadata.Value = modifiedMetadata;
}
property.Value = modified;
property.Value = modified;
}
else if (property.DataType == typeof(DateTime[]))
property.Value = DataTableUtilities.GetColumnAsDates(data, Name); //todo: add numRows/startRow option for dates
property.Value = DataTableUtilities.GetColumnAsDates(data, Name, numRows-startRow, startRow);
}
}
}
Expand Down

0 comments on commit 7449c36

Please sign in to comment.