Формат DefaultCellStyle не применяется, когда DataGridView привязан - PullRequest
1 голос
/ 14 апреля 2011

У меня есть код, который связывает представление данных с данными через источник привязки:

_bind.DataSource = Table;
lGrid.DataSource = _bind;

В событии DataBindingComplete я установил DefaultCellStyle для некоторых столбцов:

void lGrid_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    if (e.ListChangedType == ListChangedType.Reset)
        lGrid.Columns[0].DefaultCellStyle.Format = "+#,##0;-#,##0;0";
}

На этом этапеТаблица еще пуста.Поэтому позже, когда строка добавляется в таблицу и хорошо отражает ее в DataGridView, по какой-то причине формат не применяется к ячейке столбца 0.

Я проверил формат внутри события CellFormatting:

private void lGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs args)
{
    if (args.ColumnIndex == lGrid.Columns[0].Index)
    {
        string s1 = lGrid.Columns[0].DefaultCellStyle.Format;
        string s2 = lGrid[0, args.RowIndex].Style.Format;
    }
}

и s1 возвращает мне правильный формат, но s2 - просто пустая строка.

Подскажите, пожалуйста, что я делаю неправильно и как отформатировать ячейку.Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Попробуйте отформатировать стиль ячейки в событии CellFormatting .

private void lGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs args) 
{
    if (args.ColumnIndex == 0)
    {
        args.Value = // format Value here
        args.FormattingApplied = true;
    }
}
1 голос
/ 03 декабря 2014

Это может быть вызвано тем, что для типа данных Столбцы таблицы данных установлено значение строка (по умолчанию).

Таким образом, вы можете изменить тип данных Столбцы таблицы данных на числовой:

  1. При создании таблицы данных со столбцами

    Table.Columns.Add(ColumnName,typeof(double));
    
  2. Изменить тип даты позже

    Table.Columns[0].DataType = typeof(decimal);
    
...