我在ASP.Net Gridview中有以下表达式用于货币格式化。虽然没有错误,但它不显示美元格式。这里遗漏的是什么?
<%# String.Format("{0:C}", Convert.ToString(Eval("Amount")) ) %>
MARKUP
<asp:GridView ID="grdFinancialAmount" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Emp ID">
<ItemTemplate>
<%# Eval("EmpID")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<ItemTemplate>
<%# String.Format("{0:C}", Convert.ToString(Eval("Amount")) ) %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码背后
protected void Page_Load(object sender, EventArgs e)
{
Financial fin1 = new Financial { EmpID = 1, Amount = 5678 };
Financial fin2 = new Financial { EmpID = 2, Amount = -111111 };
List<Financial> accounts = new List<Financial>();
accounts.Add(fin1);
accounts.Add(fin2);
grdFinancialAmount.DataSource = accounts;
grdFinancialAmount.DataBind();
}
public class Financial
{
public int EmpID { get; set; }
public int Amount { get; set; }
}
答案 0 :(得分:19)
为什么不这样做......
<%# String.Format("{0:C}", Eval("Amount") ) %>
或
<%# ((int)Eval("Amount")).ToString("C") %>
在我看来,您正在尝试将金额转换为字符串两次,并且您无法将字符串格式化为货币。
答案 1 :(得分:8)
Eval
接受字符串格式,并且不需要这些黑客。
简单如下:<%# Eval("Amount", "{0:C}") %>
答案 2 :(得分:4)
<%#Eval("Amout", "{0:C}").ToString()%>
答案 3 :(得分:1)
试试这个:
<%# String.Format("{0:C}", int.Parse(DataBinder.Eval(Container.DataItem, "Amount").ToString())) %>