【问题标题】:no overload for method "ToString" takes 1 arguments方法“ToString”没有重载需要 1 个参数
【发布时间】:2012-02-23 20:36:51
【问题描述】:

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

代码是一些链接:

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

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

【问题讨论】:

  • TotalPrice 列是什么类型的?

标签: c# asp.net sql


【解决方案1】:

假设 TotalPrice 是 Decimal 列,并且 myReader 是 DataReader:

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

这里的想法是 myReader 的索引器(您在调用 myReader["TotalPrice"] 时使用的)返回一个对象。它必须这样做,因为它在编译时不知道该列是什么类型。通过使用.GetDecimal(),您可以确保返回一个 Decimal 值或错误。

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

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

【讨论】:

    【解决方案2】:

    String.Format() 可以解决问题。 F2 是 2 位小数的定点表示法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2021-11-04
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多