2011-01-16 27 views
5

Tengo una vista de cuadrícula con un ObjectDataSource que proviene de una consulta linq.TimeSpan DataFormatString en Gridview

Una de las variables de la fuente es un intervalo de tiempo y estoy vinculando un límite con DataField = "MyTimeSpanVariable". Los datos contienen tiempos en segundos y minutos y muy raramente en horas.

Los datos se muestran bien en su formato original, pero cuando agrego HtmlEncode = "false" DataFormatString = "{0: hh: mm: ss}" a las propiedades de boundfield en la página aspx, se bloquea en MyGridView.Databind() línea ¿Qué estoy haciendo mal?

Gracias.

Respuesta

-1

Si lo desea, puede intentar formatear su campo en el evento RowDataBound de la cuadrícula.

Por ejemplo:

Protected Sub YourGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles YourGridView.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     If e.Row.DataItem("YourColName") Then 
      'Do formatting 
     End If 
    End If 
End Sub 
3

tengo el mismo problema !:
FormatException on DataFormatString="Mødetidspunkt er {0:H:mm}"

No es posible utilizar dos puntos dobles, por lo que utilizar el especificador de formato corto período de tiempo.

DataFormatString="Time is {0:t}" 
 
t is the equivalent of HH:mm 
T is the equivalent of HH:mm:ss 

Ver "Standard DateTime Format Strings".

4

Creo que necesita escapar del segundo ':' si está usando C#. Por ejemplo:

[email protected]"Time is {0:H\:mm}"; 
3

Desde el aspx/ascx esto sería algo así como

HtmlEncode="false" DataFormatString="{0:mm\:ss}"