方法“ToString”没有重载需要1个参数

时间:2012-02-01 05:20:17

标签: c# asp.net sql

我有一个数据读取器来读取数据库中的数据。 我正在从销售表中阅读TotalPrice。 我想将总价格显示为2位小数。

代码是链接:

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

但是我输入了这个错误:方法“ToString”没有重载需要1个参数 代码有什么问题?

2 个答案:

答案 0 :(得分:14)

假设TotalPrice是一个Decimal列,而myReader是一个DataReader:

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

这里的想法是myReader的索引器(当你调用myReader["TotalPrice"]时使用的内容)返回一个Object。它必须,因为它在编译时不知道列的类型。通过使用.GetDecimal(),您可以确保获得十进制值或错误。

采用格式字符串的.ToString重载在Decimal上声明,而不是在Object上声明。对象的。ToString不带参数。

对GetOrdinal的内部调用返回给定名称的字段索引 - 如果您在多个数据行的循环中执行此操作,您可能希望将其缓存在变量中。

答案 1 :(得分:8)

String.Format()会做到这一点。 F2是定点表示法,带有2位小数。

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