我正在使用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
它会改变颜色。但是它会改变错误单元格的颜色(因为它在当前单元格上是完全合乎逻辑的)。但我不想改变当前的细胞。
有什么建议吗?
答案 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的列。