2012-02-01 38 views
7

私はデータベースからデータを読み込むためのデータリーダーを持っています。 私は売上テーブルからTotalPriceを読んでいます。 総額を小数点以下2桁で表示したいと思います。メソッドToStringのオーバーロードが1つの引数を取る

TotalPrice.Text = myReader["TotalPrice"].ToString("N2"); 

は、しかし、私はこのエラーをencounted:メソッド「ToStringメソッド」のための過負荷1つの引数を取り コードの何が問題になってい

コードがいることを何かのリンクがありますか?

TotalPrice.Text = myReader.GetDecimal(myReader.GetOrdinal("TotalPrice")).ToString("N2"); 

ここでの考え方はmyReaderのインデクサは、(あなたがmyReader["TotalPrice"]を呼び出すときに使用しているもの)のオブジェクトを返すことです:TotalPriceは10進数の列であり、そのmyReaderがDataReaderオブジェクトであると仮定すると

+0

TotalPrice列はどのような種類ですか? –

+0

umm、数値(18,5) – user1125911

答えて

12

。コンパイル時に列の型がわからないので、これを行う必要があります。 .GetDecimal()を使用することで、Decimal値を返すことが保証されます。

フォーマット文字列をとる.ToStringオーバーロードは、オブジェクトではなくDecimalで宣言されています。オブジェクトの。 ToStringは引数をとりません。

GetOrdinalを呼び出すと、名前付きのフィールドのインデックスが返されます。複数のデータ行のループでこれを実行している場合は、変数にキャッシュすることをお勧めします。

8

String.Format()はこのトリックを行います。 F2は小数点以下2桁の固定小数点表記法です。

TotalPrice.Text = string.Format("{0:F2}", (double)myReader["TotalPrice"]); 
関連する問題