【问题标题】:Apply DataFormatString in auto generated Telerik RadGridView Cell Specified (Silverlight)在指定的自动生成的 Telerik RadGridView 单元格中应用 DataFormatString (Silverlight)
【发布时间】:2013-06-26 20:35:25
【问题描述】:

在自动生成的 Telerik RadGridView 中有一个与 double 类型的属性绑定的列。

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

我想要多个 DataFormatString w.r.t Cell。

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

由于表格是自动生成的,我无法访问单个单元格的值,所以我可以更改它的 stringFormat

DataFormatString="0.###E0" 属性适用于整个列,而不是单个单元格。

【问题讨论】:

    标签: c# silverlight-5.0 dataformat


    【解决方案1】:

    在这种情况下最好不要使用默认模板。相反,定义您自己的 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();
        }
    }
    

    【讨论】:

    • 如何以科学记数法返回值?示例:20.53E+3 在:if(price &gt; 5.0) { // return 20.53E+3; }
    • 与自动生成的列绑定的问题
    • msdn.microsoft.com/en-us/library/dwhawy9k.aspx 具有所有 .NET 字符串格式。此外,如果您使用的是 CellTemplate,则绑定应该不会有问题。从您的代码看起来,您使用的是手动添加的列,而不是 AutoGenerateColumns="True" 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多