Хорошо, так что это, вероятно, очень простая проблема, с которой у меня невероятно трудное время, когда вы придумали решение.ASP.NET Сумма столбца, возвращенного из хранимой процедуры в LINQ
У меня есть простое веб-приложение ASP.Net, которое отправляет и извлекает капитальные проекты в/из базы данных SQL Server на основе свойства, выбранного пользователем.
В этом проекте у меня есть несколько хранимых процедур, построенных в SQL Server, которые обрабатывают передачу данных из приложения в базу данных. Я использую LINQ в проекте ASP.NET для подключения к хранимым процедурам.
В частности, у меня есть ASP.NET Repeater
, который является заполненным списком всех представленных проектов капиталов для выбранной компании. Мой код достаточно прост:
Ретранслятор:
<asp:Repeater ID="rptProjects" runat="server" OnItemCommand="rptProjects_ItemCommand">
<HeaderTemplate>
<table style="table-layout:auto; width:100%">
<tr>
<td style="width:2%"><b>Item #</b></td>
<td style="width:2%"><b>Priority</b> </td>
<td style="width:10%"><b>Project Name</b></td>
<td style="width:20%"><b>Description</b></td>
<td style="width:4%"><b>Reason</b></td>
<td style="width:3%"><b>Category</b></td>
<td style="width:2%"><b>Asset Age</b></td>
<td style="width:3%"><b>Est. Useful Life</b></td>
<td style="width:2%"><b>Qty</b></td>
<td style="width:2%"><b>Unit Type</b></td>
<td style="width:3%"><b>Unit Cost</b></td>
<td style="width:3%"><b>Total Budget</b></td>
<td style="width:20%"><b>Owner Comments</b></td>
<td style="width:3%"> </td>
<td style="width:3%"> </td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table style="width:100%">
<tr>
<td style="width:2%">R#</td>
<td style="width:2%"><%#Eval("Priority") %> </td>
<td style="width:10%"><%#Eval("ProjectName") %></td>
<td style="width:20%"><%#Eval("Description") %> </td>
<td style="width:4%"><%#Eval("Reason") %> </td>
<td style="width:3%"><%#Eval("Category") %></td>
<td style="width:2%"><%#Eval("AssetAge") %> </td>
<td style="width:3%"><%#Eval("AssetUsefulLife") %></td>
<td style="width:2%"><%#Eval("Quantity") %> </td>
<td style="width:2%"><%#Eval("UnitType") %></td>
<td style="width:3%"><%#Eval("UnitCost", "{0:C0}") %></td>
<td style="width:3%"><%#Eval("TotalAmount", "{0:C0}") %></td>
<td style="width:20%"><%#Eval("OwnerNotes") %></td>
<td style="width:3%">
<asp:Button ID="btnDelete" runat="server" Text="X"
ToolTip="Delete the selected project."
CommandName="Delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ItemCode") %>'
CausesValidation="False" />
</td>
<td style="width:3%">
<asp:Button ID="btnUpdate" runat="server" Text="Edit"
ToolTip="Update the selected project."
CommandName="Update" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ItemCode") %>'
CausesValidation="False" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
Ретранслятор заполняется очень просто в C# с помощью DataContext, который выполняет хранимую процедуру, которая возвращает все проекты по недвижимости.
C# код:
//Load any projects submitted for the property
using(var dataContext = new CAPEXDataConnDataContext())
{
rptProjects.DataSource = dataContext.web_CAPEXProjectsByCompany(Session["PropertyNumber"].ToString());
rptProjects.DataBind();
}
Это приводит к хорошим, простым ретранслятором:
Мой вопрос: в контексте текущего кода, как я могу легко суммировать общая колонка бюджета в FooterTemplate
в ретрансляторе?
Я не уверен, что это необходимо или нет, но я основываюсь на платформе .NET 4.5.
Спасибо, на линии 'GrandTotal + = (десятичное) e.Item.DataItem [«TotalAmount»];' Я получаю сообщение об ошибке, которое утверждает 'Невозможно применить индексирование с [] к выражению типа" object'' –
Изменить на '(десятичный) ((DataRowView) e.Item.DataItem) [" ... "]' или какой бы тип вашего 'dataSource' не возвращался. –
Теперь это: 'невозможно передать объект типа '_2016Capex.web_CAPEXProjectsByCompanyResult' для ввода 'System.Data.DowRowView'.' –