ASP.NET Datalist вычисляет поле - PullRequest
0 голосов
/ 06 февраля 2011

Я недавно решил ввести налог на веб-сайте электронной коммерции, который я создал для удовольствия, больше всего на свете, и я наткнулся на камень преткновения.

Моя реализация работает хорошо, налог применяется правильно и т. Д., ОднакоПриятель указал мне сегодня, что цены на страницах товара обычно отображаются с учетом налогов.

Я думал, что вместо редактирования уровня Бизнес и данные я мог бы изменить это в самом Списке данных, но не могужизнь моя работает так, как я это делаю.Я просматривал некоторые учебники и проводил поиск в Интернете, но поскольку я не знаю, что именно ищу, я застрял: (.

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();

Например, если цена в БД составляет 5 фунтов стерлингов, мне нужно, чтобы она отображалась в приведенном выше списке данных как 6 фунтов стерлингов, включая текущую ставку НДС в Великобритании.20%.

Итак: DBPrice * 1.2 = IncVatPrice

Надеюсь, это имеет смысл!

Заранее спасибо, Мэтт

1 Ответ

0 голосов
/ 06 февраля 2011

Вместо

<%# 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 / сообщество / блоги / fritz / archive / 2005/12/16 / 17507.aspx

...