ASP.NET Datalist计算字段

时间:2011-02-06 19:59:17

标签: asp.net datalist

我最近决定在一个电子商务网站上实施税收,这个网站我的目的是为了更多的乐趣,而且我遇到了绊脚石。

我的实施运作良好,税收正确应用等,但是一位好友今天向我指出,产品页面上的价格通常是含税的。

我在思考,而不是编辑业务和数据层,我可以在DataList本身上改变它,但我不能在我的生活中弄清楚我是如何实际做到的。我看过一些教科书并在网上搜索,但因为我实际上并不知道我在找什么,所以我被卡住了:(。

Datalist中:

<asp:DataList ID="list" runat="server" RepeatColumns="2" CssClass="ProductList" RepeatDirection="Horizontal" 
    Width="542px" EnableViewState="False" onitemcommand="list_ItemCommand">
<ItemTemplate>
<div style="width:271px;">
<h3 class="ProductName"><a href="<%# Link.ToProduct(Eval("ProductID").ToString()) %>"><%# HttpUtility.HtmlEncode(Eval("Name").ToString()) %></a></h3>
<a href="<%# Link.ToProduct(Eval("ProductID").ToString()) %>"><img width="100" border="0" src="<%# Link.ToProductImage(Eval("Thumbnail").ToString()) %>" alt='<%# HttpUtility.HtmlEncode(Eval("Name").ToString()) %>' /></a>
<%# HttpUtility.HtmlEncode(Eval("Description").ToString()) %>
<p>
<b>Price:</b>
<%# Eval("Price", "{0:c}") %>
</p>
<p>
<asp:Button ID="addToCartButton" runat="server" Text="Add to Basket" CommandArgument='<%# Eval("ProductID") %>' CssClass="SmallButtonText" />
</p>
</div>
</ItemTemplate>
</asp:DataList>

代码背后:

    // Retrieve the list of products in a Sub Category
    list.DataSource = CatalogAccess.GetProductsInSubCategory(subCategoryId, page, out howManyPages);
    list.DataBind();

E.g。如果数据库中的价格是5英镑,我需要在上面的数据表中显示为6英镑,其中包括当前英国增值税税率为20%。

所以: DBPrice * 1.2 = IncVatPrice

我希望这是有道理的!

提前致谢, 马特

1 个答案:

答案 0 :(得分:0)

而不是

<%# Eval("Price", "{0:c}") %>

使用与

有些相似的表达式
<%# String.Format("{0:c}", (Decimal)Eval("Price")*1.2) %>

或者在codebehind中实现一个函数:

protected string IncludeVat(object dataItem)
{
  Decimal price = (Decimal)DataBinder.Eval(dataItem, "Price");
  return String.Format("{0:c}", price * 1.2);
}

并在你的DataList中调用它

<%# IncludeVat(Container.DataItem) %>

http://www.pluralsight-training.net/community/blogs/fritz/archive/2005/12/16/17507.aspx