Правильно форматировать валюту в DevExpress Grid Control

Итак, я видел другие вопросы по этому поводу, но я не могу на всю жизнь заставить свою сетку форматировать мой поплавок как валюту. Вот мой простой проект, в нем есть элемент управления сеткой gridcontrol1 с 4 столбцами, я хочу, чтобы последний был валютой, а остальные 3 - строкой.

public partial class Form1 : Form
{
    private DevExpress.XtraGrid.GridControl gridControl1;
    private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
    private DevExpress.XtraGrid.Columns.GridColumn gridColumn1;
    private DevExpress.XtraGrid.Columns.GridColumn gridColumn2;
    private DevExpress.XtraGrid.Columns.GridColumn gridColumn3;
    private DevExpress.XtraGrid.Columns.GridColumn gridColumn4;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ArrayList test = new ArrayList();
        test.Add(new MyObject() { myCurrency = 1.5F, prop1 = "hi", prop2 = "hi2", prop3 = "hi3" });

        gridColumn4.DisplayFormat.FormatString = "c";
        gridColumn4.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;

        gridControl1.DataSource = test;
        gridControl1.MainView.PopulateColumns();
        gridControl1.RefreshDataSource();
    }
}

public class MyObject
{
    public string prop1 { get; set; }
    public string prop2 { get; set; }
    public string prop3 { get; set; }
    public float myCurrency { get; set; }
}

Я пробовал строку формата «c», «c2», «N», «N2» и FormatType как пользовательского, так и числового, а также любую их комбинацию с тем же результатом, что и «1,5», указанный в поле. Я делаю что-то простое неправильно? Это не может быть так сложно!


person Kevin DiTraglia    schedule 02.10.2012    source источник


Ответы (2)


Пожалуйста, попробуйте следующее (у меня это работает):

GridColumn colCurrency = gridView1.Columns["myCurrency"];
colCurrency.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
colCurrency.DisplayFormat.FormatString = "c";

Связанная ссылка: Свойство GridColumn.DisplayFormat

Также удалите команду ColumnView.PopulateColumns, так как коллекция GridView.Columns очищается при вызове этого метода. Таким образом, формат отображения, который вы задали для столбцов в дизайнере, не влияет на вновь созданный столбец.

person DmitryG    schedule 02.10.2012
comment
У меня это не работает, поле по-прежнему отображается без форматирования валюты. - person Kevin DiTraglia; 03.10.2012
comment
@KDiTraglia: Странно... это должно работать так, как описано в документации. Трудно определить причину этой проблемы из-за отсутствия информации. Поэтому я предлагаю вам сообщить об этой проблеме в Центр поддержки DevExpress (с полным образцом прикрепил). В любом случае, если у вас возникнут проблемы с использованием DevExpress, вы должны сообщить об этих проблемах в службу поддержки DevExpress, а не в SO. - person DmitryG; 03.10.2012
comment
Оказывается, после того, как я спросил разработчиков, почему он не работал, эта строка gridControl1.MainView.PopulateColumns(); сбрасывала макет, я оставлю вас в качестве принятого ответа, так как вы ведете меня в правильном направлении, но я отредактирую то, что на самом деле решило это для меня. - person Kevin DiTraglia; 03.10.2012

Вместо

gridColumn4.DisplayFormat.FormatString = "c";
gridColumn4.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;

Просто переместитесь вверх по второй строке:

gridColumn4.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
gridColumn4.DisplayFormat.FormatString = "c";
person Hikmet    schedule 19.10.2016
comment
Я применил форматирование кода, вы можете сделать это самостоятельно, выбрав строки кода в поле редактирования и нажав кнопку {} (для каждого блока кода). - person Peter B; 19.10.2016