字符串格式不适用于Eval

时间:2013-02-10 16:38:57

标签: c# asp.net .net

我在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; }
}

4 个答案:

答案 0 :(得分:19)

为什么不这样做......

<%# String.Format("{0:C}", Eval("Amount") ) %>

<%# ((int)Eval("Amount")).ToString("C") %>

在我看来,您正在尝试将金额转换为字符串两次,并且您无法将字符串格式化为货币。

答案 1 :(得分:8)

Eval接受字符串格式,并且不需要这些黑客。

简单如下:<%# Eval("Amount", "{0:C}") %>

答案 2 :(得分:4)

试试这个,对我有用。 (.NET 4.5 C#,在gridview中)

<%#Eval("Amout", "{0:C}").ToString()%>

答案 3 :(得分:1)

试试这个:

<%# String.Format("{0:C}", int.Parse(DataBinder.Eval(Container.DataItem, "Amount").ToString()))  %>