2012-02-01 79 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"]); 
相关问题