如何将 SqlDataReader 字符串格式化为 Asp.net 中的货币格式?

How to format from SqlDataReader string to currency format in Asp.net?

我像这样从数据库中检索值 173557.0000。我想显示 1,73,557.00.

这是我尝试过的代码

Table1001Hour.Rows[i].Cells[0].Text = rd["hour"].ToString();
Table1001Hour.Rows[i].Cells[1].Text = string.Format("{0:C}", Convert.ToInt32(rd["salesCost"].ToString()));

但它会抛出一条错误消息。

Input string was not in a correct format.

如果我不转换为字符串,它会显示为原样 173557.0000

谢谢

看来问题出在这里:

Convert.ToInt32(rd["salesCost"].ToString())

所以...不要那样做?从数据库返回的数据可能 只是一个 int,所以:(int)rd["salesCost"](或者,如果您不确定具体类型,Convert.ToInt32(rd["salesCost"])) 应该没问题。然后你也可以使用重载 ToString;给你:

Table1001Hour.Rows[i].Cells[1].Text = ((int)rd["salesCost"]).ToString("C");

(尽管基于 .0000,它可能是 decimaldouble - 后者对于财务数据来说是一个非常糟糕的选择)

老实说,我认为让 UI 代码和数据库代码直接相互接触是错误的,但我可能就是这样。如果是我,我会从数据库中填充一个对象模型,然后 单独 将对象模型写入 UI.