我的代码出现以下错误:“输入字符串格式不正确”。在以下一行:
Convert.ToDecimal(tdprice.InnerText).ToString("##.###");
在代码块中:
protected void rptConsole_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlTableCell tdprice = e.Item.FindControl("price") as HtmlTableCell;
tdprice.InnerText = Convert.ToDecimal(tdprice.InnerText).ToString("##.###");
}
}
要全面了解我要尝试的内容,请访问以下链接Selecting an Item or column in a Repeater and changing the Data
答案 0 :(得分:1)
Convert.ToDecimal(string)
方法明确使用Decimal.Parse(string, CurrentCulture)
。这是怎样的implemented;
public static decimal ToDecimal(String value)
{
if (value == null)
return 0m;
return Decimal.Parse(value, CultureInfo.CurrentCulture);
}
Decimal.Parse(string, CurrentCulture)
方法implemented as;
public static Decimal Parse(String s, IFormatProvider provider)
{
return Number.ParseDecimal(s, NumberStyles.Number, NumberFormatInfo.GetInstance(provider));
}
如您所见,它使用NumberStyles.Number
枚举。这是一个复合样式,可以包含;
Char.IsWhiteSpace
返回true
)CurrentCulture
的{{3}}和PositiveSign
)CurrentCulture
的{{3}}属性)CurrentCulture
的{{3}}属性)由于您说您的方法失败且值为5.33432
,因此您的CurrentCulture
NegativeSign
属性很可能不是.
您可以使用NumberDecimalSeparator
根据CurrentCulture
创建副本NumberGroupSeparator
,并将此属性设置为.
答案 1 :(得分:1)
您根本不需要使用OnItemDataBound事件。
你可以在ASP标记中这样做:
...
<td align="center"><%# String.Format("{0:F2}", Eval("[price]")) %></td>
...
或者如果您想使用.NET货币格式:
...
<td align="center"><%# String.Format("{0:C}", Eval("[price]")) %></td>
...
查看本文以获取有关.NET标准数字格式字符串的更多具体信息:http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx