2016-07-29 7 views
0

Ich habe eine gespeicherte Prozedur, die als eine Datenquelle in meinem Gridview verwandt wird. Einige Spalten sind numerisch und ich möchte, dass sie im Money-Format mit Dezimalzahlen und Kommas formatiert sind.Formatieren eines numerischen Werts in Gridview ohne Boundfield

ich in der Lage war, dass vor zu erreichen, indem ein Dataformatstring-Attribute in der Boundfield wie in diesem Beispiel

<asp:BoundField HeaderText="Non VAT" DataField="nonvat" DataFormatString="{0:#,##0.00;(#,##0.00);0}" /> 

jedoch mit, in meinem Fall ist es keine Boundfield verfügbar, da ich eine Logik vorgenommen habe, die Boundfield nicht ist erforderlich.

Gibt es andere Mittel, um es zu tun, abgesehen von der Formatierung in SQL?

+1

Was Sie jetzt statt Boundfield mit Ihren Daten angezeigt werden? Vorlagenfeld? Etwas anderes? Wie auch immer, posten Sie die Art, wie Sie es jetzt verwenden – Andrei

+0

autogeneratecolumn ist auf wahr gesetzt. Die gespeicherte Prozedur als Datenquelle macht die Datenanzeige in der Gridview natürlich in ASP.net fest codiert. – rickyProgrammer

+0

Wenn boundfield verwendet wird, wird autogeneratecolumns auf false gesetzt. – rickyProgrammer

Antwort

0

Sie können immer RowDataBound verwenden, nonvat Annahme ist eine Dezimalzahl und es ist erste Spalte:

protected void grid_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRowView row = (DataRowView)e.Row.DataItem; 
     decimal nonvat = (decimal)row["nonvat"]; 
     e.Row.Cells[0].Text = nonvat.ToString("#,##0.00;(#,##0.00);0}"); 
    } 
} 
+0

Während dies funktionieren kann, legt die Tatsache, dass OP absichtlich automatisch generierte Spalten verwendet, nahe, dass die Anzahl der Spalten dynamisch ist. Dann kann OP möglicherweise nicht wissen, welcher Spaltenindex zu welcher Spalte gehört. – Andrei

+0

Was ist, wenn der Spaltenname kein statischer Name ist? Was kann ich in den "nonvat" Teil einfügen? – rickyProgrammer

+0

@rickyProgrammer: Sie können immer den 'int'-indexer verwenden:' dezimal nonvat = (dezimal) row [0]; ' –

Verwandte Themen