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()
обработчик событий, где вы можете определить, как данные будут отформатированы в обоих направлениях.