2016-07-29 14 views
0

私はGridviewのデータソースとして使用されるストアドプロシージャを持っています。いくつかの列は数値で、10進数とコンマを使ってMoney形式で書式を設定したいと考えています。バインドフィールドなしでGridviewで数値をフォーマットする

私はboundfieldではないというロジックを作ったので、前に、この例のようにboundfieldに

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

をdataformatstring属性を使用してしかし、私の場合には、利用可能なBoundfieldがないことを達成することができました必須。

すぐにSQLで書式設定するのとは別の方法がありますか?

+1

、あなたのデータを表示する代わりにBoundFieldの今何を使用していますか? TemplateField?他に何か?とにかく、あなたが今使っている方法を投稿してください – Andrei

+0

autogeneratecolumnがtrueに設定されています。したがって、データソースとしてのストアドプロシージャは、実際にはASP.netでハードコードされたコースビューのデータ表示を実際に行っています。 – rickyProgrammer

+0

boundfieldを使用すると、autogeneratecolumnsはfalseに設定されます。 – rickyProgrammer

答えて

0

あなたはいつもnonvatを推定することは小数であり、それは最初の列だ、RowDataBoundを使用することができます。

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

これはうまくいくかもしれませんが、OPが故意に自動生成された列を使用しているという事実は、列の数が動的であることを示唆しています。次に、OPは、どの列インデックスがどの列に行くかを知る方法がない可能性があります。 – Andrei

+0

列名が静的でない場合はどうなりますか?私は "nonvat"の部分に何を入れることができますか? – rickyProgrammer

+0

@rickyProgrammer:あなたはいつも 'int'-indexerを使うことができます:' decimal nonvat =(10進)行[0]; ' –

関連する問題