C# gridview中多个页面的grandtotal和runningtotal

C# gridview中多个页面的grandtotal和runningtotal,c#,gridview,cumulative-sum,C#,Gridview,Cumulative Sum,我有一个在页脚有total的gridview。我的分页每页只允许25条记录。因此,当有多个页面时,应该有运行总计和总计。谁能帮我弄一下密码吗。下面是一列的总计代码 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" ShowFooter="True" OnPageIndexChanging="GridView1_PageIndexChanging" OnDat

我有一个在页脚有total的gridview。我的分页每页只允许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>
我看不出样本。这些都很令人困惑。因此,请帮助编码

更新:

这是我的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)
创建过程[dbo]。[SP_平均天数]
@续字符(1),
@瓦查尔月(10),
@蒙尼尔斯·瓦尔查尔(12岁),
@2_Div_代码VARCHAR(2)
作为
声明@SelectText-varChar(2000)
声明@Table varchar(30)
如果@2_Div_代码“”
开始
如果@MonYr\u S='Div\u Reg'
开始
设置@Table='VW\u BPDP\u DIV\u REG'
结束
如果@MonYr\u S='Div\u区域'
开始
设置@Table='VW\U BPDP\U分区'
结束
如果@MonYr\u S='Div\u Loc'
开始
设置@Table='VW\U BPDP\U DIV\U LOC'
结束
结束
设置@SelectText='SELECT条件、表头、期间、支票收据、BP天数
从“++@Table+”开始
其中CONT_C='+@CONT_C++''和DIV_C='+@2_DIV_Code++''
执行(@SelectText)

根据您的代码,运行总数正常。。 您可以通过将每个页面的运行总数保存到viewState或Session中来计算总计。 还是要从一开始就显示所有条目的总计

我假设您不需要所有表都使用GrandTotal,因此我建议使用另一个varchar变量:@SelectCriteria,您可以在希望使用GrandTotal的位置设置它

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)
创建过程[dbo]。[SP_平均天数]
@续字符(1),
@瓦查尔月(10),
@蒙尼尔斯·瓦尔查尔(12岁),
@2分区代码VARCHAR(2),
@2_Reg_代码VARCHAR(3),
@2区域代码VARCHAR(3),
@2\u CR\u代码VARCHAR(3)
作为
声明@SelectText-varChar(2000)
声明@SelectCriteria varChar(100)
声明@Table varchar(30)
如果@2_Div_代码“”
开始
如果@MonYr\u S='Div\u Reg'
开始
将@SelectCriteria=',Sum(_columnWithValues)设置为GrandTotal'
设置@Table='IA\U VPAYMENTS\U BPDP\U DIV\U REG'
结束
如果@MonYr\u S='Div\u区域'
开始
设置@Table='IA\U VPAYMENTS\U BPDP\U DIV\u区域'
结束
如果@MonYr\u S='Div\u Loc'
开始
设置@Table='IA\U VPAYMENTS\U BPDP\U DIV\U LOC'
结束
结束
从“+@Table+”中设置@SelectText='SELECT CRITERIA\N、HEADER\N、PERIOD\N、CHECK\u RECEIPT、BP\u DAYS'+@SelectCriteria+”,其中CONT\u C='+@CONT\u C++''和DIV\u C='+@2 DIV\u Code++''
执行(@SelectText)

一种非常简单的方法是返回正在使用的存储过程中的总计(只需在select末尾添加一个总和),但如果不可能这样做,通过addind Text=''为标签创建一个函数,然后在c#代码隐藏中,您可以从objectdatasource请求完整的表并求和正确的值。foreach(objDataSource.Select()中的DataRowView项){//sum values}您能帮我用示例代码在存储过程中添加总数吗。。我先试试。一般来说,你应该从表orry中选择val1,val2,val3,Sum(val3)作为GrandTotal来编辑。。我没有意识到这是你的答案,相反,我认为我发布的SP是错误的。SP执行成功,但当我执行存储过程时,我得到了一个错误
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)