【问题标题】:comma on price value is not being read没有读取价格值的逗号
【发布时间】:2016-05-21 16:25:45
【问题描述】:

我已经实现了一个价格文本框,其中显示 12,345 而不是 12345。或者有时。 12,345.00。但是,当提交到数据库时,它显示12345。逗号消失了。这有什么技巧吗?这是我的下单按钮代码:

 protected void btnPlaceOrder_Click(object sender, EventArgs e)
    {
        string productids = string.Empty;
        DataTable dt;
        if (Session["MyCart"] != null)
        {
            dt = (DataTable)Session["MyCart"];

            decimal totalPrice, totalProducts;
            bool totalPriceConversionResult = decimal.TryParse(txtTotalPrice.Text, out totalPrice), totalProductsConversionResult = decimal.TryParse(txtTotalProducts.Text, out totalProducts);


            ShoppingCart k = new ShoppingCart()
            {
                CustomerName = txtCustomerName.Text,
                CustomerEmailID = txtCustomerEmailID.Text,
                CustomerAddress = txtCustomerAddress.Text,
                CustomerPhoneNo = txtCustomerPhoneNo.Text,
                TotalProducts = totalProductsConversionResult ? Convert.ToInt32(totalProducts) : 0,
                TotalPrice = totalPriceConversionResult ? Convert.ToInt32(totalPrice) : 0,
                ProductList = productids,
                PaymentMethod = rblPaymentMethod.SelectedItem.Text

            };
            DataTable dtResult = k.SaveCustomerDetails();

            for (int i = 0; i < dt.Rows.Count; i++) // loop on how many products are added by the user
            {
                ShoppingCart SaveProducts = new ShoppingCart()
                {
                    CustomerID = Convert.ToInt32(dtResult.Rows[0][0]),
                    ProductID = Convert.ToInt32(dt.Rows[i]["ProductID"]),
                    TotalProducts = Convert.ToInt32(dt.Rows[i]["ProductQuantity"]),
                };
                SaveProducts.SaveCustomerProducts();
            }
            var customerId = Convert.ToInt32(dtResult.Rows[0][0]);
            Response.Redirect(String.Format("OrderSummary.aspx?Id={0}", customerId.ToString()));

我可以对总价做些什么?

我尝试使用 string.format 来尝试它是否会得到 12,345,但我失败了。这是代码:

lblTotalProducts.Text = Convert.ToString(dtCustomerDetails.Rows[0][String.Format("{0:#,000.00}","TotalProducts")]);

上面这行代码将从数据库中获取数据。

【问题讨论】:

  • TryParse 需要设置国际化参数,这样你就可以强制 .和 , (不同的语言交换它们)
  • 你能帮我吗先生@StianSkjelstad
  • @StianSkjelstad 我只需要在数据库中显示逗号。这样当我从数据库中获取数据时,它将显示正确的格式。 12,345
  • stackoverflow.com/questions/23131414/… 这个展示了 Decimal.TryParse() 的一些示例。相同的逻辑适用于大部分 TryParse

标签: asp.net textbox type-conversion comma string.format


【解决方案1】:

在数字数据存储中,逗号千位分隔符无关紧要。它只是一个演示工件。在您的情况下,让数据库将值存储为12345,但使用string.Format 方法将其显示为12,345.00。请参阅Standard Numeric Formats

编辑:lblTotalProducts.Text = String.Format("{0:#,000.00}",dtCustomerDetails.Rows[0]["TotalPr‌​oducts"]);

【讨论】:

  • 我明白。但是当我从数据库中获取值时,我希望它是 12,345
  • 例如这里: lblTotalPrice.Text = Convert.ToString(dtCustomerDetails.Rows[0]["TotalPrice"]);此代码从数据库中获取数据
  • @PaoloDuhaylungsod 因此,您需要在这一行上对其进行格式化(使用string.Format)以包含千位分隔符。例如,string.Format("{0:#,000.00}", 12345)
  • 这有什么问题? lblTotalProducts.Text = Convert.ToString(dtCustomerDetails.Rows[0][String.Format("{0:#,000.00}","TotalProducts"]); 错误是 ) 预期
  • (现在,我们正在进入 spood-feeding 领域。)错误消息说,你有一个错误的)。在调用 string.Format 之前,像往常一样单独获取值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
相关资源
最近更新 更多