DataGridView: форматировать значения без фактического изменения ограниченных данных?

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

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

Path.GetFileName();

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

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

Спасибо заранее

2 ответа

Решение

Используйте событие 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;
    }
}

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

Другие вопросы по тегам