¿Cómo formatear columnas DateTime en DataGridView?
Estoy usando un DataGridView con enlace de datos de objetos para mostrar información sobre entidades de registro en un sistema, recuperada mediante SOAP desde un servicio remoto. Una de las columnas se llama "Última acción" y significa la última vez que la entidad registró un mensaje. Es un System.DateTime
valor. Cuando leo la respuesta SOAP (ejemplo a continuación), la marca de tiempo obviamente contiene toda la información, hasta fracciones de segundo.
<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>
Cuando lo muestro en la mesa, puedo leer hasta los minutos. Utilizo el siguiente código para realizar el enlace de datos cuando presiono el botón de actualización.
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; }));
}
Me gustaría saber cómo controlar el formato de las columnas de los valores vinculados a datos. Creo que el formato dd/MM/aaaa hh:mm proviene de la configuración de mi sistema. ¿Cómo anular la configuración de formato mediante programación?
gracias de antemano
Código de solución completo en Subversion (programa FFDAGui) para el proyecto de código abierto Logbus-ng.
Si se trata de un Datagrid de Windows, puede utilizar el siguiente código para formatear la fecha y hora de una columna.
dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss";
EDITAR :
Aparte de esto, si necesita la fecha y hora en formato AM/PM, puede usar el siguiente código
dataGrid.Columns[2].DefaultCellStyle.Format = "MM/dd/yyyy hh:mm:ss tt";
Utilice la propiedad Column.DefaultCellStyle.Format o configúrela en el diseñador
Puede configurar el formato que desee:
dataGridViewCellStyle.Format = "dd/MM/yyyy";
this.date.DefaultCellStyle = dataGridViewCellStyle;
// date being a System.Windows.Forms.DataGridViewTextBoxColumn
Utilicé este código. Espero que pueda ayudar.
dataGridView2.Rows[n].Cells[3].Value = item[2].ToString();
dataGridView2.Rows[n].Cells[3].Value = Convert.ToDateTime(item[2].ToString()).ToString("d");