Как использовать 2 десятичных знака, используя деньги в веб-формах ASP.NET?

Я знаю, здесь есть несколько ответов, но ни один из них не работает.

Итак, вот сценарий:

Получил GridView и в одном из этих столбцов объявлена ??цена. В SQL Database я использую moneyдля объявления цены. GridView будет импортировать данные из базы данных программно. Код здесь:

        var con = new SqlConnection();
        var cmd = new SqlCommand();
        var dt = new DataTable();
        con.ConnectionString = @"Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=C:UsershugowDocumentsVisual Studio 2015ProjectsOSGS_v2dataBase.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?

Я использую веб-формы, а не MVC.

Заранее спасибо!

c#,sql,asp.net,gridview,

0

Ответов: 2


1 принят

Если вы используете, <ItemTemplate>вы можете использовать это:

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

С BoundField вы используете DataFormatString:

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

0:cдаст вам правильный формат валюты с соответствующим символом денег для вашей текущей локализации. Если вы хотите использовать числовое значение с двумя десятичными знаками, которые вы использовали бы 0:N2.

Для всех параметров формата см. Https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx


1

Просто сообщите вашей системе, чтобы она была перенесена на два десятичных знака,

decimal.Round("your value", 2, MidpointRounding.AwayFromZero);
C #, MS SQL, asp.net, GridView,
Похожие вопросы