2015-03-10 7 views
-2

Я пытаюсь сделать добавление столбцов в Gridview, но не смог.Как создать сумму каждого столбца в sql?

как я заполняю gridview из процедуры хранения, которая дает эти значения.

DateTime 10Quantity 20Quantity 30Quantity 10Amount 20Amount 30Amount GrandTotal 
03/10/2015 792  0   594  7920  0  17820 25740 
03/10/2015 332  3   194  9990  0  28220 38739 

Ожидаемый:

DateTime 10Quantity 20Quantity 30Quantity 10Amount 20Amount 30Amount GrandTotal 
03/10/2015 792  0   594  7920  0  17820 25740 
03/10/2015 332  3   194  9990  0  28220 38739 
Totals  1124  3   788  17910  0  46040 64479 

я хочу новую строка «Итоговые», которые должны представлять общие для каждого столбца т.е. дополнения.

Код:

<asp:GridView ID="GridViewDenominationsWiseTransactions" runat="server" Width="100%" AutoGenerateColumns="False" 
         ShowFooter="True" OnRowDataBound="GridViewDenominationsWiseTransactions_RowDataBound" CssClass="table table-hover table-striped table-bordered"> 
         <Columns> 
          <asp:BoundField HeaderText="Date" DataField="DateTime" DataFormatString="{0:dd/MMM/yyyy hh:mm}" HtmlEncode="false" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="11%" /> 
          </asp:BoundField> 
          <%-- <asp:BoundField HeaderText="Conductor Name" DataField="ConductorName" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%"></ItemStyle> 
          </asp:BoundField>--%> 
          <asp:BoundField HeaderText="10 Quantity" DataField="10Quantity" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
          <asp:BoundField HeaderText="20 Quantity" DataField="20Quantity" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
          <asp:BoundField HeaderText="30 Quantity" DataField="30Quantity" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
          <asp:BoundField HeaderText="10 Amount" DataField="10Amount" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
          <asp:BoundField HeaderText="20 Amount" DataField="20Amount" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
          <asp:BoundField HeaderText="30 Amount" DataField="30Amount" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="8%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
          <asp:BoundField HeaderText="GrandTotal" DataField="GrandTotal" ItemStyle-CssClass="visible-desktop" 
           HeaderStyle-CssClass="visible-desktop"> 
           <HeaderStyle CssClass="visible-desktop"></HeaderStyle> 

           <ItemStyle Width="13%" CssClass="visible-desktop"></ItemStyle> 
          </asp:BoundField> 
         </Columns> 
        </asp:GridView> 

SP;

ALTER PROCEDURE [dbo].[ReportDenominationWiseTransaction] '03-10-2015', '03-10-2015' 
@FromDate date, 
@ToDate date 
AS 
    BEGIN 
     with myquery ([DateTime],amount,Quantity) 
     as 
     (
      select Convert(varchar(20),serverdatetime,101) 'DateTime',amount,1 'Quantity' 
       from tickets 
       WHERE CONVERT(DATE,ServerDateTime) BETWEEN @FromDate and @ToDate 
     ) 
     select *, 10 * c.[10Quantity] '10Amount',20 * c.[20Quantity] '20Amount',30 * c.[30Quantity] '30Amount',((10 * c.[10Quantity])+(20 * c.[20Quantity])+(30 * c.[30Quantity]))'GrandTotal' from (
     SELECT DateTime,[10] AS '10Quantity', [20] AS '20Quantity', [30] AS '30Quantity' 
     FROM 
     (SELECT [DateTime], amount,quantity 
     FROM myquery) p 
     PIVOT 
     (
     COUNT ([Quantity]) 
     FOR [Amount] IN 
     ([10], [20], [30]) 
     ) AS pvt 
     ) as c 
    END 

я должен делать это с переднего конца, т.е. GridView

+0

Вы можете добавить ожидаемый результат? – Wanderer

+0

проверить его добавление –

ответ

0

использовать обработчик события RowDataBound для оценки данных (столбцы сумм), когда они добавляются к GridView.

И добавьте нижний колонтитул, чтобы показать итоги.

Взгляните на это: https://msdn.microsoft.com/en-us/library/bb310552.aspx ШАГ 3: решение 2. То есть, как вы используете EventHandler для запуска суммы в GridView.

+0

извините, не получил, я не понимаю –

+0

@AamirShah, нельзя быть ясным, чем это. Ссылка фактически показывает полную реализацию. – Thangadurai

0

На самом деле вы можете найти SUM каждого столбца, используя sql, используя GROUPING SETS.

Запрос

SELECT [DateTime], 
SUM([10Quantity]) AS [10Quantity], 
SUM([20Quantity]) AS [20Quantity], 
SUM([30Quantity]) AS [30Quantity], 
SUM([10Amount]) AS [10Amount], 
SUM([20Amount]) AS [20Amount], 
SUM([30Amount]) AS [30Amount], 
SUM([GrandTotal]) AS [GrandTotal] 
FROM table_name 
GROUP BY 
GROUPING SETS(([DateTime],[10Quantity],[20Quantity], 
[30Quantity],[10Amount],[20Amount],[30Amount],[GrandTotal]),()); 
Смежные вопросы