2013-06-26 58 views
0

我有一个列绑定与double类型属性在自动生成Telerik RadGridView。应用DataFormatString自动生成Telerik RadGridView单元格指定(Silverlight)

<telerik:GridViewDataColumn 
     Header="Formated Price" DataFormatString="0.###E0" 
     DataMemberBinding="{Binding Price, Mode=TwoWay}"> 
</telerik:GridViewDataColumn> 

我想多个DataFormatString w.r.t单元格。

例如:如果单元格中的值大于5,则应在单元格中显示“指数值”,否则应在单元格中显示“以小数点后两位舍入”值。

由于生成表自动,我无法访问单个单元格的值,这样我就可以改变它的StringFormat

酒店DataFormatString="0.###E0"适用于完整的列,而不是在单个细胞上。

回答

0

在这种情况下最好的做法是不使用默认模板。相反,请定义您自己的CellTemplate(GridViewDataColumn.CellTemplate)并使用converter on the value。该转换器看起来像这样:

class PriceConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     double price = Convert.ToDouble(value); 

     if(price > 5.0) 
     { 
      // return the price formatted how you want 
     } 
     else 
     { 
      // return the price formatted differently 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

我如何返回科学计数法中的值? 例如:** 20.53E + 3 **中: '如果(价格> 5.0){ //返回20.53E + 3; } – Riz

+0

问题与自动生成列绑定 – Riz

+0

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx具有所有的.NET字符串格式。另外,如果你使用CellTemplate,你不应该有一个问题绑定。通过代码的外观,您正在使用手动添加的列,而不是AutoGenerateColumns =“True”属性。 –

相关问题