Преобразование имени месяца в ячейку DataGridView с привязкой к базе данных - PullRequest
5 голосов
/ 23 января 2012

У меня есть привязка данных с привязкой к данным.В нем у меня есть столбец, который имеет значения NULL и 1-12.Как я могу во время выполнения заставить datagridview превратить 1 в январь и отобразить его в ячейке?И NULL в другую предопределенную строку?

Я попытался просмотреть формат ячейки, изменил его на пользовательский, затем вставил «МММ», но он не работал и отобразил «МММ» в фактической ячейке.

Пожалуйста, помогите.

РЕДАКТИРОВАТЬ: его winforms c # 4.0, поле связано с полем Int из сущности в EF.И нет необходимости в чувствительности к культуре, английский в порядке.

РЕДАКТИРОВАТЬ: я пытался {0: MMM}, он не работал, просто отображал {X: MMM} в ячейке, где X является int.

Некоторые скриншоты:

format

result

Ответы [ 2 ]

4 голосов
/ 23 января 2012

Если WinForms попробуйте это:

Используйте Column.DefaultCellStyle.Format или установите его в designer .

Этот пост должен прояснить любые сомнения:

Настройка формата строки DateTime в привязке данных WPF и WinForm


ПРОБЛЕМА : маски форматирования строки будут работать только со значениями DateTime. У вас есть int, и в этом случае я думаю, вам придется написать функцию конвертера ...

Проверьте это:

Событие DataGridView.CellFormatting

1 голос
/ 23 января 2012

Самый простой способ сделать это - создать отдельное свойство для привязки данных , такое как DisplayMonth, которое содержит необходимую логику, а затем привязать ячейку к этому свойству. Вы используете EF-генерируемые классы? Если это так, вы можете добавить это свойство в частичный класс, чтобы расширить класс, сгенерированный EF.

Это будет выглядеть примерно так:

public string DisplayMonth
{
  get { return ConvertToString(this.Date); //TODO: create ConvertToString method }
  set { return this.Date = ConvertFromString() //TODO: create ConvertFromString method ; }
}

Как уже упоминалось, вы также можете использовать событие CellFormatting, однако вам нужно будет повторно реализовывать его везде, где этот объект используется в сетке.

...