如何使用ASP.NET Eval而不是ModelBinding显示Item Total



我是新的ASP.NET Web Forms开发人员,正在使用ASP.NET 4.5。我现在正在努力将一个语句从使用ModelBinding转换为Eval,就像我使用ObjectDataSource一样。

ASP.NET代码行:

<asp:TemplateField HeaderText="Item Total">
    <ItemTemplate>
        <%#: String.Format("{0:c}", ((Convert.ToDouble(Item.Quantity)) *  Convert.ToDouble(Item.Product.UnitPrice)))%>
    </ItemTemplate>
</asp:TemplateField>

我不想使用ModelBinding并说Item.Quantity或Item.Product.UnitPrice,而是想使用Eval语句,因为这行代码包含在绑定到ObjectDataSource的ASP.NET GridView中。那么我该怎么做呢?

我试着这样做:

<asp:TemplateField HeaderText="Item Total">
    <ItemTemplate>
<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity").ToString()))  %>
 *  
<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice").ToString()))  %>
    </ItemTemplate>
</asp:TemplateField>

但不幸的是,它给了我以下结果:

4.00美元*22.50美元

而不是做数学计算,我不知道为什么那么我该如何修复这行代码呢

提前感谢您的帮助。

您正在尝试使用以下两个字符串值进行数学运算:

<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity").ToString()))  %>
 *  
<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice").ToString()))  %>

试试这样的东西:

<%# String.Format("{0:C}", (Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice") * Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity")).ToString()))  %>

这对我来说很好。

<%# String.Format("{0:C}", Double.Parse(DataBinder.Eval(Container.DataItem, "Quantity").ToString()) * Double.Parse(DataBinder.Eval(Container.DataItem, "TTSF_Product.UnitPrice").ToString())) %> 

最新更新