【问题标题】:How to change formatting on specific cells in RadGridView如何更改 RadGridView 中特定单元格的格式
【发布时间】:2012-08-25 11:39:26
【问题描述】:

所以我有一个动态的 RadGridView。这意味着我以编程方式将列添加到控件中。基本上是这样的:

for (int i = 0; i < length; i++)
{
    Binding b = new Binding(string.Format("Collection[{0}].ValueIWant", i));
    binding.StringFormat = "{0:0.##}";
    GridViewDataColumn column = new GridViewDataColumn()
    {
        Header = HeaderFor(i),
        DataMemberBinding = b,
        DataType = typeof(double?)
    };

    Control.columns.Add(column);
}

现在我需要添加新的行来显示1 and 22 and 3 等行之间的百分比。

我已经做到了,但我不确定我将如何设法更改专门针对这些单元格而不是整个列的 String.format。

想到了CellTemplateSelector,但我不确定这是一个好主意,因为这可能意味着我必须再次设置绑定,不知道i 的值等等。另外我只想更改绑定上的 string.format。

当我将数字作为双精度操作时(0,5 是 50%,50 是 5000%),我想我也必须屏蔽输入。不确定 String.Format 是否也适合我,或者我是否应该使用 RadMaskedInput

【问题讨论】:

  • 是否要设置处于编辑模式的单元格的格式?
  • 仅在显示模式下就足以获得赏金,但我也会尝试在编辑中进行 MaskedInput。
  • GridView 的DataSource 是什么(或者如果没有数据源,如何填充行)?
  • 有时因为森林看不到树。我注意到 Telerik 有一个 RowStyleSelector,所以我可以轻松地为我想要的行设置样式。我让这种方式变得比它需要的更复杂。

标签: wpf mvvm binding telerik radgridview


【解决方案1】:

使用IValueConverter 将每一行的列值转换为其适当的表示形式。因此,对于计算列上的绑定,请使用:

// bind to the row data itself, not any specific property
Binding b = new Binding();
b.Converter = new RowToFormattedValueConverter

这会将完整的行数据发送到转换器;因此您应该能够使用该行的一些现有属性来确定它是哪种类型(常规或百分比),或者添加一个额外的隐藏属性/列来明确指定它。然后转换器看起来像这样:

public class RowToFormattedValueConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var rowData = (MyModelType)value;
        string formattedResult;
        if (rowData.IsPerecentageRow) 
        {
            formattedResult= string.Format("{0:P1}", rowData.ValueIWant);
        }
        else
        {
            formattedResult= string.Format("{0:0.##}", rowData.ValueIWant);
        }
        return formattedResult;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多