DataGridView: форматировать значения без фактического изменения ограниченных данных? - PullRequest
2 голосов
/ 09 августа 2010

Я искал в Интернете, но не смог найти ответ.

У меня есть DataGridView с ограниченным BindingSource, который имеет список объектов пользовательского класса. Среди полей класса у меня есть строковое поле, которое я хочу показать, используя

Path.GetFileName();

потому что он содержит весь путь к файлу, и я хочу показать только имя файла, но сохранить путь к файлу (то есть ограниченные данные без изменений) в ограниченном объекте.

Есть ли способ сделать это (формат, шаблон, стили, ...)? потому что каждый раз, когда я изменяю поле значения ячейки, оно меняет значение объекта (что является его логикой).

Большое спасибо заранее

Ответы [ 2 ]

5 голосов
/ 09 августа 2010

Используйте событие DataGridView.CellFormatting в DataGridView.Это даст вам объект DataGridViewCellFormattingEventArgs с информацией о текущей ячейке, включая строку и столбец и неформатированное значение.Вы обновляете свойство Value до форматированного значения и устанавливаете для FormattingApplied значение true, и DataGridView будет отображать это значение.

Примерно так:

private void dataGridView1_CellFormatting(object sender, 
    DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0) // Check for the column you want
    {
        e.Value = Path.GetFileName(e.Value.ToString());
        e.FormattingApplied = true;
    }
}
0 голосов
/ 09 августа 2010

Класс Binding имеет обработчик событий Format() и Parse(), где вы можете определить, как данные будут отформатированы в обоих направлениях .

...