2012-02-01 75 views
7

我有一個數據讀取器從數據庫中讀取數據。 我正在從銷售表中讀取TotalPrice。 我想顯示總價格爲2位小數。沒有過載的方法「ToString」需要1個參數

的代碼是什麼鏈接:

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

但是我中遇到這個錯誤:沒有重載方法「的ToString」需要1個參數 有什麼不好的代碼?

+0

什麼類型是TotalPrice列? – 2012-02-01 05:20:50

+0

umm,數字(18,5) – user1125911 2012-02-01 05:23:27

回答

12

假設TotalPrice是一個十進制列,那myReader是一個DataReader:

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

這裏的想法是,myReader的索引(當你調用myReader["TotalPrice"]你使用的是什麼)返回一個對象。它必須,因爲它不知道在編譯時該列是什麼類型。通過使用.GetDecimal(),您可以確保獲得Decimal值或出現錯誤。

.ToString重載需要一個格式字符串的十進制宣佈,而不是對象。對象的。 ToString不需要任何參數。

內調用GetOrdinal返回字段的指數給出的名字 - 如果你是在多個數據行的循環這樣做,你可能想緩存在一個變量。

8

String.Format()將做到這一點。 F2是帶2位小數點的定點表示法。

TotalPrice.Text = string.Format("{0:F2}", (double)myReader["TotalPrice"]); 
相關問題