如何在ASP.NET Web表单中使用2位小数?

时间:2016-10-16 13:41:09

标签: c# sql asp.net gridview

我知道,这里有一些答案,但它们都不起作用。

所以这是场景:

获得GridView,并在其中一列中声明价格。在SQL数据库中,我使用money来声明价格。 GridView将以编程方式从数据库导入数据  代码在这里:

        var con = new SqlConnection();
        var cmd = new SqlCommand();
        var dt = new DataTable();
        con.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\hugow\Documents\Visual Studio 2015\Projects\OSGS_v2\dataBase.mdf;Integrated Security=True;Connect Timeout=30";
        cmd.Connection = con;
        string cmdText = null;
        string usrName = Request.Cookies["usrData"]["usrName"];
        cmdText = "SELECT orderID, Products, orderPrice, date FROM orderData WHERE orderUser=@usr";
        cmd.Parameters.Add("@usr", SqlDbType.VarChar).Value = usrName;
        con.Open();
        cmd.CommandText = cmdText;
        var da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        stdT.DataSource = dt;
        stdT.DataBind();
        con.Close();
        con.Dispose();

我希望将价格显示为两位小数(0,00)。问题是:它显示4位小数(0,0000)。

2个问题:

  1. 如何显示2位小数而不是4位?
  2. 为什么money有4位小数而不是2位?
  3. 我使用的是Web Forms,而不是MVC。

    提前致谢!

2 个答案:

答案 0 :(得分:1)

告诉你的系统将值包装为两位小数,

decimal.Round("your value", 2, MidpointRounding.AwayFromZero);

答案 1 :(得分:1)

如果你使用<ItemTemplate>,你可以使用它:

<%# string.Format("{0:c}", Convert.ToDecimal(Eval("orderPrice"))) %>

使用BoundField,您可以使用DataFormatString

<asp:BoundField DataField="orderPrice" HeaderText="Price" DataFormatString="{0:c}" />

0:c会为您提供正确的货币格式,并为您当前的本地化提供相应的货币符号。如果你想要一个带有2位小数的数值,你可以使用0:N2

有关所有格式选项,请参阅https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx