Jamie888 Ответов: 1

Дата практическое руководство формат отображения


Привет, у меня есть несколько записей, возвращенных из базы данных. Одним из них является столбец ScheduleDate. Возвращаемый столбец находится в формате datetime, и я преобразовал его с помощью кодов в формат "dd MMM yyyy". Например, преобразованный результат будет иметь вид "11 июля 2018 года". Затем я связываю записи в DataGridView в WinForm.
Но проблема в том, что формат изменится на "07/11/2018", как в соответствии с моим форматом системных часов ОС Windows. Я не устанавливал никакого форматирования в конкретном столбце В DataGridView, как если бы я установил форматирование, всякий раз, когда я изменяю формат системных часов ОС Windows, данные ScheduleDate будут сбиваться в "01/01/0001". Мне нужно было бы снова и снова чистить свое решение, и это вызвало бы проблемы у конечных пользователей.
Есть ли какая-либо альтернатива, которую я могу использовать для решения своей проблемы здесь? Ниже приведены некоторые примеры моих кодов:

DateTime scheduleDate = new DateTime();
foreach (CustomerOrderDto customerOrderDto in customerOrderDtoList.DtoList)
{
    scheduleDate = DateTime.Parse(customerOrderDto.ScheduleDate);
    customerOrderDto.ScheduleDate = scheduleDate.ToString("dd MMM yyyy");
}


Что я уже пробовал:

1. Удалите настройку форматирования в столбце datagridview.
2. отладка путем применения точки останова в последней строке кодов и ScheduleDate все еще находится в правильном формате(11 июля 2018 года).

1 Ответов

Рейтинг:
0

Mike V Baker

Вы можете создать новое свойство в своем Dto.

public string ScheduleDateString { get { return ScheduleDate.ToString("dd MMM yyyy"); } }
Затем свяжите столбец DataGridView со свойством string type. Это не будет редактируемым полем, так как у него есть только геттер. Будет, что делать?
Тем не менее, мне интересно, почему вы хотите заставить его сделать это. Система делает то, что она должна делать, отображая и позволяя редактировать настройки пользователя. Так что если их настройки ДД МММ гггг, то это то, что он покажет (и редактирование будет разрешено).


Jamie888

Sir, thanks for your suggestion. To answer your question above, originally the column ScheduleDate in datagridview has formatting done in "dd MMM yyyy" format. But users found out that if they change their system clock region(e.g. from English(US) into English(UK)), the supposed "dd MMM yyyy" value will get haywire into "01/01/0001". I have troubleshoot the issue by removing the formatting and move the formatting into codes level as the above question posted but to no avail as i keep on getting the "07/11/2018" instead of "11 Jul 2018" format. I suspect there is some setting in DataGridView that will default any formatting into the system clock format if there is no explicit formatting done in DataGridView itself.

Mike V Baker

Вы вернулись назад и удалили пользовательское форматирование из столбца представления таблицы данных после того, как переместили форматирование в код позади? Если это просто свойство типа текста, и у вас все еще нет пользовательского формата, чтобы заставить DGV думать, что это должна быть дата, то он вообще не должен делать никакого форматирования.