2011-01-16 14 views
5

Ho un gridview con un ObjectDataSource che proviene da una query linq.TimeSpan DataFormatString in Gridview

Una delle variabili dell'origine è un intervallo di tempo e sto vincolando un campo vincolato con DataField = "MyTimeSpanVariable". I dati contengono ore in secondi e minuti e molto raramente in ore.

I dati vengono visualizzati correttamente nel suo formato nativo, ma quando aggiungo HtmlEncode = "false" DataFormatString = "{0: hh: mm: ss}" alle proprietà boundfield nella pagina aspx, si blocca sul MyGridView.Databind() linea. Che cosa sto facendo di sbagliato?

Grazie.

risposta

-1

Se lo si desidera, è possibile provare a formattare il campo nell'evento RowDataBound di Grid.

Ad esempio:

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

Ho lo stesso problema !:
FormatException on DataFormatString="Mødetidspunkt er {0:H:mm}"

Non è possibile utilizzare due i due punti, in modo da utilizzare l'identificatore di formato breve periodo di tempo.

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

Vedi "Standard DateTime Format Strings".

4

Credo che sia necessario sfuggire al secondo ':' se si utilizza C#. Per esempio:

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

Dal aspx/ascx questo sarebbe qualcosa di simile

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