Telerik RadGridView使用C#根据另一个单元格值更改单元格颜色

时间:2014-10-31 07:49:06

标签: c# winforms telerik radgridview

我正在使用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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用基于规则的格式化对象,这在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和前景颜色为红色的背景颜色。将单元格的内容与中间右对齐,并将其绑定到名为UnitPrice的列。