ASP.net ListBox货币格式

时间:2017-06-04 18:59:20

标签: c# asp.net listbox

好的,我有一个ListBox,它显示了绑定列表中的产品(它们是自定义类,并且具有ID,名称,价格)。我希望ListBox显示项目名称和价格。列表框(lbProductsChosen)将“DataTextField”设置为Name,并将DataValueField设置为ID。我正在使用PreRender事件来检查每个项目,从绑定列表(blProducts)等查看其价格,它的效果很好。我得到了列表中显示的名称和价格。但是,当它显示时,尽管我使用String.Format格式化它,结果仍然是一个十进制数字(例如3.20000),它看起来很丑陋。有谁知道它为什么要显示它,但没有显示它我想要它的格式化。

    protected void lbProductsChosen_PreRender(object sender, EventArgs e)
    {
        foreach (ListItem item in lbProductsChosen.Items)
        {
            string currentDescription = item.Text;
            int convertedValue = Convert.ToInt32(item.Value);
            for (int i = 0; i < blProducts.Count; i++)
            {
                if (blProducts[i].ProductID == convertedValue)
                {
                    decimal ItemPrice = blProducts[i].Price;
                    string convertedPrice = ItemPrice.ToString();
                    string currentPrice = String.Format("{0:c}", convertedPrice);
                    string currentDescriptionPadded = currentDescription.PadRight(30);
                    item.Text = currentDescriptionPadded + currentPrice;
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

MSDN说明了String.Format方法的以下内容。

  

通常,通过使用CultureInfo.CurrentCulture属性返回的当前区域性的约定,将参数列表中的对象转换为其字符串表示形式。

如果您使用货币格式说明符c,它将使用系统设置中定义的货币格式。看一下control panel - &gt; region - &gt; additional settings - &gt; currency。也许你搞砸了那里的设置。

enter image description here

如果您想忽略对货币有意义的本地设置,您可以执行以下操作。 (以美元为例,总计两位小数)

decimal price = 12.10999999m;
String.Format("${0:0.00}", price);
  

$ 12.10条

请注意String.Format没有正确对数字进行舍入,只是将其剪掉。