2013-10-28 118 views
0

我想格式化样式格式条件的表达式中的字符串,如果条件为真,则使用某种颜色绘制单元格的背景颜色。我的条件是只比较,如果两个值的减法等于另一个值,我执行这样的比较,因为值是双倍,它是必要的,以避免精度误差,其中EPSILON是0.001:DevExpress - 在格式条件下格式化表达式的字符串

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); 

回答

0

您是否已将格式条件添加到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; } 
} 
+0

是的,我已经theformat条件到GridView.FormatConditions集合添加。问题是该列的数据类型是字符串和表达式不起作用 –

+0

@ Vkt0r我很高兴听到您的问题现在已解决 – DmitryG