Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串格式不适用于Eval_C#_Asp.net_.net - Fatal编程技术网

C# 字符串格式不适用于Eval

C# 字符串格式不适用于Eval,c#,asp.net,.net,C#,Asp.net,.net,在ASP.NETGridView中,我有以下用于货币格式设置的表达式。虽然没有错误,但它不显示美元格式。这里遗漏了什么 <%# String.Format("{0:C}", Convert.ToString(Eval("Amount")) ) %> 标记 <asp:GridView ID="grdFinancialAmount" runat="server" AutoGenerateColumns="false"> <Columns>

在ASP.NETGridView中,我有以下用于货币格式设置的表达式。虽然没有错误,但它不显示美元格式。这里遗漏了什么

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

标记

 <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; }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
财务fin1=新财务{EmpID=1,金额=5678};
财务fin2=新财务{EmpID=2,金额=-111111};
列表帐户=新列表();
账户。添加(fin1);
账户。添加(fin2);
grdFinancialAmount.DataSource=账户;
grdFinancialAmount.DataBind();
}
公营金融机构
{
公共int EmpID{get;set;}
公共整数金额{get;set;}
}
试试这个:

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

为什么不做这两件事呢

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


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

试试这个,对我来说很有用。(网格视图中的.NET 4.5 C#)


Eval
接受字符串格式,不需要这些黑客攻击


很简单:

@Lijo我想我忘了.DataItem。请立即尝试(我已编辑)已编辑。忘记强制转换为整数。我假设这是因为Int32(int)实现了IFormattable并提供了一个ToString(string format)方法,该方法将根据给定的格式模板调用string.format。注意:
。如果字段为
NULL
,则ToString()
将导致问题。
<%# ((int)Eval("Amount")).ToString("C") %>
<%#Eval("Amout", "{0:C}").ToString()%>