我正在尝试格式化样式格式条件表达式中的字符串,以便在条件为真时用某种颜色绘制单元格的背景颜色。我的条件是,如果两个值的减法等于另一个值,我只进行比较,我像这样执行比较,因为值是双倍的,并且有必要避免精度误差,其中 EPSILON 为 0.001:
if (Math.Abs(rvalue - tara - value) > EPSILON)
{
// do something
}
我正在尝试这段代码,但不起作用,如果有人可以这样做,请帮助我。谢谢
var condExpression = new StyleFormatCondition(FormatConditionEnum.Expression);
condExpression.Column = gv_MateriaPrima.Columns[3];
condExpression.Appearance.BackColor = Color.OrangeRed;
condExpression.Expression = String.Format("Abs([FieldName] - {0} - {1}) > {2}",
value1, value2, EPSILON);
是否已将格式条件添加到 GridView.FormatConditions 集合中?
这是对我正常工作的代码片段(请检查与您的代码的差异):
// just sample data
gridControl1.DataSource = new List<DataObj> {
new DataObj() { RValue = 0.2 },
new DataObj() { RValue = 0.21 }, // !!! Orange
new DataObj() { RValue = 0.201 }, // !!! Orange
new DataObj() { RValue = 0.2001 },
new DataObj() { RValue = 0.20001 },
};
gridView1.PopulateColumns();
//...
var condExpression = new StyleFormatCondition(FormatConditionEnum.Expression);
condExpression.Column = gridView1.Columns["RValue"];
condExpression.Appearance.BackColor = Color.OrangeRed;
condExpression.Appearance.Options.UseBackColor = true;
condExpression.Expression = String.Format("Abs([RValue] - {0} - {1}) > {2}", 0.1, 0.1, EPSILON);
gridView1.FormatConditions.Add(condExpression);
//...
class DataObj {
public double RValue { get; set; }
}