Telerik RadGridView使用C#根据其他单元格值更改单元格颜色

本文关键字:单元格 颜色 其他 RadGridView 使用 Telerik | 更新日期: 2023-09-27 18:28:45

我使用的是Telerik RadGridView。我正在尝试根据另一个单元格的值更改一个单元格颜色。我正试图使用以下代码来实现这一点:

if (e.Column.Name == "colDate" && !string.IsNullOrEmpty(e.CellElement.Value.ToString()))
{
    if (DateTime.Now > DateTime.Parse(e.CellElement.Value.ToString()))
    {
        e.Row.Cells["colColor"].Style.DrawFill = true;
        e.Row.Cells["colColor"].Style.BackColor = Color.Red;
        e.Row.Cells["colColor"].Style.NumberOfColors = 1;
    }
}

但由于某种原因,它不会改变颜色。我注意到,当我更换时

e.Row.Cells["colColor"].Style

带有

e.CellElement

它会改变颜色。但随后它会更改错误单元格的颜色(这是完全合乎逻辑的,因为它在当前单元格上)。但我不想更改当前单元格。

有什么建议吗?

Telerik RadGridView使用C#根据其他单元格值更改单元格颜色

您可以使用基于规则的格式化对象,这在telerik api文档中有记录。

他们的代码示例看起来像这个

ConditionalFormattingObject obj = new ConditionalFormattingObject("MyCondition", ConditionTypes.Greater, "30", "", false);
obj.CellBackColor = Color.SkyBlue;
obj.CellForeColor = Color.Red;
obj.TextAlignment = ContentAlignment.MiddleRight;
this.radGridView1.Columns["UnitPrice"].ConditionalFormattingObjectList.Add(obj);

为了解释这一点,创建了一个名为MyCondition的规则,该规则规定,如果该单元格值大于30,则将单元格的背景色设为SkyBlue,并将前景色设为Red。将单元格的内容右中对齐,并将其绑定到名为UnitPrice的列。