我有一个数据读取器来读取数据库中的数据。 我正在从销售表中阅读TotalPrice。 我想将总价格显示为2位小数。
代码是链接:
TotalPrice.Text = myReader["TotalPrice"].ToString("N2");
但是我输入了这个错误:方法“ToString”没有重载需要1个参数 代码有什么问题?
答案 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"]);