2011-01-16 14 views
5

Ich habe eine Gridview mit einer ObjectDataSource, die von einer Linq-Abfrage stammt.TimeSpan DataFormatString in Gridview

Eine der Variablen der Quelle ist eine Zeitspanne und ich binde ein gebundenes Feld mit dem DataField = "MyTimeSpanVariable". Die Daten enthalten Zeiten in Sekunden und Minuten und sehr selten in Stunden.

Die Daten werden im nativen Format angezeigt, aber wenn ich HtmlEncode = "false" DataFormatString = "{0: hh: mm: ss}" zu den Eigenschaften des gebundenen Feldes in der aspx-Seite hinzufüge, stürzt es auf MyGridView.Databind ab() Linie. Was mache ich falsch?

Danke.

Antwort

-1

Wenn Sie möchten, können Sie versuchen, Ihr Feld im RowDataBound-Ereignis des Rasters zu formatieren.

Zum Beispiel:

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

Ich habe das gleiche Problem !:
FormatException on DataFormatString="Mødetidspunkt er {0:H:mm}"

Sie können nicht zwei Doppelpunkte verwenden, so nutzen die kurze Zeit Formatbezeichner.

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

"Standard DateTime Format Strings" See.

4

Ich glaube, Sie müssen die zweite ':' entkommen, wenn Sie C# verwenden. Zum Beispiel:

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

Vom aspx/ascx wäre so etwas wie

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