我知道,这里有一些答案,但它们都不起作用。
所以这是场景:
获得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个问题:
money
有4位小数而不是2位?我使用的是Web Forms,而不是MVC。
提前致谢!
答案 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