.NET Framework 4.8
Telerik 2022 R1
There are two conditional cell formats: one for the command cell and another for a checkbox.
The formatting for the command cell works without issue. However, for the unavailable column the formatting is applied to other cells and even other columns regardless of the value which is needed.
Only the first two rows, "1 Giant Slice" and "10inch Small", should have the unavailable cells in red. These two rows are consistently formatted correctly, but other rows have both unavailable and available cells formatted in red, too. The rows which have incorrect formatted do not seem to be consistent.
The debugger and logging the values of the data bound item shows that the proper values are there and only.
e.g.
only the two items and for the proper column are processed by the if statement that applies formatting to the unavailable cell (line 134 in form).2022-09-01 10:26:08.749 [DEBUG] Item: 1 Giant Slice - Next Available: [01/01/2024 12:30:00] - Column Name: Unavailable 2022-09-01 10:26:08.761 [DEBUG] Item: 10inch Small - Next Available: [01/01/2024 12:30:00] - Column Name: Unavailable
I've attached a sample project with some sample JSON data that is loaded when the Form Load event is handled.
There has to be something I'm doing wrong but I just can't figure out what it is.
Any help would be most appreciated. TIA
Cell formatting event handler:
private void Dgv_MenuItems_CellFormatting(object sender, CellFormattingEventArgs e)
{
if (_isFiltering)
{
return;
}
if (sender is GridCommandCellElement cellElement)
{
var row = dgv_MenuItems.Rows[e.RowIndex];
var boundObj = (MenuItemAvailabilityModel)row.DataBoundItem;
//This conditional formatting works without issue
if (boundObj.CustomAvailability.Count > 0)
{
cellElement.CommandButton.Text = "Change";
cellElement.CommandButton.ButtonFillElement.BackColor = Color.LightGreen;
}
else
{
cellElement.CommandButton.Text = "Add";
cellElement.CommandButton.ButtonFillElement.BackColor = default;
}
}
else if (e.Column.Name == nameof(MenuItemAvailabilityModel.Unavailable))
{
var row = dgv_MenuItems.Rows[e.RowIndex];
var boundObj = (MenuItemAvailabilityModel)row.DataBoundItem;
//This conditional formatting is applied to cells for which no NextAvailable is set in the data
if (boundObj.NextAvailableAt.HasValue && boundObj.NextAvailableAt.Value > DateTime.Now)
{
e.CellElement.DrawFill = true;
e.CellElement.BackColor = Color.Red;
e.CellElement.NumberOfColors = 1;
}
}
}