2010-11-22 12 views
2

Ich habe eine GridView, wo die Spalten dynamisch sind. Das GridView wird an eine DataTable gebunden.Formatierung dynamische GridView

Eine der Spalten ist eine DateTime-Spalte. Ich muss diese Spalte formatieren, um "01/01/2010" anstelle von "01/01/2010 12:00:00 AM" anzuzeigen.

Ich kann die Spalte zum Speichern von Zeichenfolgen anstelle einer DateTime nicht ändern.

Was ist der beste Weg, dies zu tun?

Antwort

6

Ich nehme an, dass Sie das Raster mit den AutoGenerateColumns verwenden, wenn dies der Fall ist, bin ich nicht sicher, die richtige Methode, wenn es einen gibt, aber hier ist eine schnelle und schmutzige Möglichkeit, den Text zu ändern Ausgabe.

protected void grdTest_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.DataItem != null) 
     { 
      e.Row.Cells[1].Text = DateTime.Parse(e.Row.Cells[1].Text).ToShortDateString(); 
     } 
    } 

Dieser Code Sie ein auf Zeilendaten gebunden Ereignis erstellen und dann den Text analysieren, und formatieren Sie es, wie Sie wollen. Dies funktioniert jedoch nur, wenn Sie wissen, dass das Datum immer in einer bestimmten Spalte sein wird. Eine andere Option, wenn Sie dynamische Spalten aber mehr Kontrolle haben möchten, wäre, AutoGenerateColumns auf false zu setzen und die Spalten der Rasteransicht dynamisch mit den gewünschten Spalten zu füllen, bevor Sie sie binden. Auf diese Weise können Sie die Datenformat-Zeichenfolge verwenden. Das ist ein bisschen mehr Arbeit, aber Sie können noch Ihre Spalten steuern:

BoundField Col1 = new BoundField(); 
Col1.DataField = "StringFieldName"; 

BoundField Col2 = new BoundField(); 
Col2.DataField = "DateFieldName"; 
Col2.DataFormatString = "{0:d}"; 

grdTest.Columns.Add(Col1); 
grdTest.Columns.Add(Col2); 
0

Wenn Sie die Spalte der Rasteransicht hinzufügen, können Sie "DisplayFormat" einrichten, um die Währung anzuzeigen.

+0

Haben Sie ein Beispiel dafür? – Steven