2010-10-27 5 views
27

Я использую DataGridView с привязкой данных к объектам для отображения информации о регистрации объектов в системе, полученной через SOAP с удаленной службы. Один из столбцов называется «Последнее действие» и означает, что последний раз, когда объект зарегистрировал сообщение. Это значение System.DateTime. Когда я читаю ответ SOAP (пример ниже), метка времени, очевидно, содержит всю информацию, вплоть до вторых фракций.Как форматировать столбцы DateTime в DataGridView?

<LoggingEntity> 
<host>marty86ce</host> 
<process>10148</process> 
<logger>http_core</logger> 
<appName>httpd</appName> 
<ffda>true</ffda> 
<lastAction>2010-10-27T12:00:19.5117509Z</lastAction> 
<lastHeartbeat>0001-01-01T00:00:00</lastHeartbeat> 
<channelId>em_9BA2A2B4D0B6E66</channelId> 
<ffdaChannelId>em_E7C8D1D4DE8EEB9</ffdaChannelId> 
</LoggingEntity> 

Когда я показываю его на столе, вместо этого я могу читать до минут http://i.stack.imgur.com/dLYBz.png я использую следующий код, чтобы сделать привязку данных при нажатии кнопки Обновить

public void RefreshEntities() 
{ 
    IEntityManagement management = EntityPlugin.GetProxy(); 
    LoggingEntity[] result = management.FindLoggingEntities(new TemplateQuery { ffdaSpecified = true, ffda = true }); //Remote invocation 

    Invoke(new MethodInvoker(delegate { gridEntities.DataSource = result; })); //THIS does the data binding from the array 

    Invoke(new MethodInvoker(delegate { btnRefresh.Enabled = true; })); 
} 

I хотел бы знать, как управлять форматированием столбцов значений данных. Я думаю, что формат dd/MM/yyyy hh: mm происходит из настроек моей системы. Как переопределить параметры форматирования программно?

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

Полный код решения на Subversion (программа FFDAGui) для LOGBUS-нг проекта с открытым исходным кодом.

+0

Как это сделать в WPF? –

ответ

14

Если это окна образуют DataGrid, вы можете использовать следующий код для форматирования DateTime для столбца

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss"; 

EDIT:

Помимо этого, если вам нужно da tetime в формате AM/PM, вы можете использовать приведенный ниже код

dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt"; 
+0

'' HH: MM: ss "' из первого примера не будет работать, так как MM - месяц, а не минуты. –

+0

Исправлено. Это была опечатка. Спасибо @ManuelHoffmann –

27

Вы можете установить формат, который вы хотите:

dataGridViewCellStyle.Format = "dd/MM/yyyy"; 
this.date.DefaultCellStyle = dataGridViewCellStyle; 
// date being a System.Windows.Forms.DataGridViewTextBoxColumn 
+4

'dd/MM/yyyy' форматирует дату как' dd-MM-yyyy'. Используйте 'dd '/' MM '/' yyyy' для форматирования даты как' dd/MM/yyyy' – TFischer

+2

'yourColumn.DefaultCellStyle = new DataGridViewCellStyle {Format =" dd '/' MM '/' yyyy hh: mm: ss "};' – Appulus

+0

К сожалению, это ничего не меняет для меня. Мой день остается таким, какой он есть. Похоже, что дата в моей колонке рассматривается как строка, которая делает ее неформатируемой. Существуют ли особые требования к датам, кроме того, что они являются реальными значениями даты? – C4u

0

Вы можете установить формат в ASPX, просто добавьте свойство «DateFormatString» в вашем BoundField.

DataFormatString="{0:dd/MM/yyyy hh:mm:ss}" 
+0

Нет такого свойства DateFormatString в 'System.Windows.Forms.DataGridViewCell' –

0

Я использовал эти символы Надеюсь, что это может помочь

dataGridView2.Rows[n].Cells[3].Value = item[2].ToString(); 
dataGridView2.Rows[n].Cells[3].Value = Convert.ToDateTime(item[2].ToString()).ToString("d"); 
+0

Не могли бы вы добавить какое-то объяснение? –

+0

Это, если вы вручную заполняете строки, и вам желательно преобразовать DateTime в String. ToString ("d") указывает формат даты только для метода DateTime ToString. – galamdring

Смежные вопросы