grandtotal и runningtotal для нескольких страниц в виде сетки

У меня есть сетка с итогом в нижнем колонтитуле. Мой пейджинг позволяет только 25 записей для каждой страницы. Таким образом, при наличии нескольких страниц должны быть итоговые и общие итоги. Может ли кто-нибудь помочь мне с кодом. ниже приведен код суммы для столбца.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" ShowFooter="True" OnPageIndexChanging="GridView1_PageIndexChanging" OnDataBound="GridView1_DataBound" OnRowDataBound="GridView1_RowDataBound" OnRowCreated="GridView1_RowCreated">
<asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="30px"                                                                                                          HeaderStyle-VerticalAlign="Top" ItemStyle-Wrap="True">
<ItemTemplate>
<asp:Label ID="lblcriteria" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"CRITERIA_N") %>' />
</ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="Period" SortExpression="PERIOD_N" ItemStyle-HorizontalAlign="Center"
 HeaderStyle-VerticalAlign="Top" ItemStyle-Wrap="True">
<ItemTemplate>
<asp:Label ID="lblPERIOD_N" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"PERIOD_N") %>' /></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="Receipts" SortExpression="CHECK_AMT_A_USD" ItemStyle-HorizontalAlign="Center"
HeaderStyle-VerticalAlign="Top" HeaderStyle-Width="70px">
<ItemTemplate>
<asp:Label ID="lblReceipt" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"CHECK_AMT_A_USD") %>' /></ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbltotReceipt" runat="server"></asp:Label>
<asp:Label ID="lblgrangtot" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
</column>

aspx.cs

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    GridView grid = sender as GridView;
    DataRowView tableData = e.Row.DataItem as DataRowView;
    DataTable dt = Session["List"] as DataTable;       

    if (e.Row.RowType == DataControlRowType.Header)
    {
        totreceipt = 0; 
    }
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        Label lblReceipt = (Label)e.Row.FindControl("lblReceipt");
        totreceipt += Convert.ToDecimal(tableData["CHECK_AMT_A_USD"]);
    }
    if (e.Row.RowType == DataControlRowType.Footer)
    {

        Label lbltotReceipt = (Label)e.Row.FindControl("lbltotReceipt");
        lbltotReceipt.Text = string.Format("{0:N2}", totreceipt);
        e.Row.Cells[0].Text = "Total:";
    }

}

Я не мог пройти через образцы. Это довольно запутанно. Так что, пожалуйста, помогите с кодированием.

ОБНОВИТЬ:

Вот мой SP..

CREATE procedure [dbo].[SP_AVG_DAYS]      

@Cont_C char(1),      
@Month_dd varchar(10),        
@MonYr_S VARCHAR(12),        
@2_Div_Code VARCHAR(2)       

As                  

DECLARE @SelectText varChar(2000)                         
DECLARE @Table varchar(30)      

IF @2_Div_Code <> ''    
BEGIN    
 IF @MonYr_S='Div_Reg'    
 BEGIN    
  SET @Table='VW_BPDP_DIV_REG'    
 END    
 IF @MonYr_S='Div_Area'    
 BEGIN     
  SET @Table='VW_BPDP_DIV_AREA'    
 END    
 IF @MonYr_S='Div_Loc'    
 BEGIN     
  SET @Table='VW_BPDP_DIV_LOC'    
 END 
 END


SET @SelectText='SELECT CRITERIA_N,HEADER_N,PERIOD_N,CHECK_RECEIPT, BP_DAYS 
FROM ' + @Table + '       
WHERE  CONT_C = ''' + @Cont_C + ''' AND DIV_C = ''' + @2_Div_Code + ''' '     

EXECUTE(@SelectText)

1 ответ

Решение

Промежуточный итог в порядке с вашим кодом... общий итог, который вы можете вычислить, сохранив промежуточный итог с каждой страницы в viewState или Session. Или вы хотите показать общий итог по всем записям с самого начала?

Я предполагаю, что вам не нужен GrandTotal для всех таблиц, поэтому я бы предложил иметь другую переменную varchar: @SelectCriteria, которую вы устанавливаете в местах, где вы хотите получить общий итог

CREATE procedure [dbo].[SP_AVG_DAYS]   
@Cont_C char(1),      
@Month_dd varchar(10),        
@MonYr_S VARCHAR(12),        
@2_Div_Code VARCHAR(2),        
@2_Reg_Code VARCHAR(3),        
@2_Area_Code VARCHAR(3),        
@2_CR_Code VARCHAR(3)       

As                  

DECLARE @SelectText varChar(2000)                         
DECLARE @SelectCriteria varChar(100)    
DECLARE @Table varchar(30)      

IF @2_Div_Code <> ''    
BEGIN    
IF @MonYr_S='Div_Reg'    
 BEGIN    
   SET @SelectCriteria =', Sum(_columnWithValues) as GrandTotal'
   SET @Table='IA_VPAYMENTS_BPDP_DIV_REG'    
 END    
IF @MonYr_S='Div_Area'    
  BEGIN     
SET @Table='IA_VPAYMENTS_BPDP_DIV_AREA'    

END    
 IF @MonYr_S='Div_Loc'    
 BEGIN     
  SET @Table='IA_VPAYMENTS_BPDP_DIV_LOC'    
 END 
 END


SET @SelectText='SELECT CRITERIA_N,HEADER_N,PERIOD_N,CHECK_RECEIPT, BP_DAYS' + @SelectCriteria + ' FROM ' + @Table + 'WHERE  CONT_C = ''' + @Cont_C + ''' AND DIV_C = ''' + @2_Div_Code + ''' '     
EXECUTE(@SelectText)
Другие вопросы по тегам