快速业务通道

ASP.NET 2.0数据教程之十五:在GridView的页脚中显示统计信息

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
CSS类分配给此GridView 的FooterStyle的CssClass属性。如果你需要复习一下皮肤和主题的相关内容,请 参考“使用ObjectDataSource显示数据”。

先给Styles.css添 加以下的CSS类:


1.FooterStyle
2{}{
3   background-color: #a33;
4  color: White;
5  text-align: right;
6}

FooterStyle这个CSS类跟HeaderStyle类是一样的 ,只是HeaderStyle的背景色要深一点且文本是粗体显示的而已。此外,页脚的文 本是右对齐的,而页眉的文本是居中的。

然后,为了将这个CSS类关联到 每一个GridView的页脚上,在DataWebControls主题中打开GridView.skin文件并 设置FooterStyle的CssClass属性。作了这个添加之后,文件的标记代码应该是这 个样子:


1<asp:GridView runat="server" CssClass="DataWebControlStyle">
2  <AlternatingRowStyle CssClass="AlternatingRowStyle" />
3  <RowStyle CssClass="RowStyle" />
4   <HeaderStyle CssClass="HeaderStyle" />
5  <FooterStyle CssClass="FooterStyle" />
6  <SelectedRowStyle CssClass="SelectedRowStyle" />
7</asp:GridView>

就像下面这个屏幕截图所显示的那样 ,这个更改使页脚清晰的显示出来了。

ASP.NET 2.0数据教程之十五:在GridView的页脚中显示统计信息

图十二:GridView的页脚现在有了一个红红的背景色

第三步: 计算统计数据

在显示了GridView的页脚之后,下一个面对我们的挑战就 是如何计算统计数据。有两个计算统计信息的途径:

1.通过一个 SQL查询——我们可以向数据库发出一个额外的查询来为某个特定的类 别计算统计信息。SQL包含一系列的聚合函数,并由GROUP BY子句指定应该根据什 么数据来进行统计。下面的SQL查询将会返回我们所需要的信息:

1SELECT CategoryID, AVG(UnitPrice), SUM(UnitsInStock), SUM(UnitsOnOrder)
2FROM Products
3WHERE CategoryID = categoryID
4GROUP BY CategoryID

当然,你也可能不喜欢 直接在SummaryDataInFooter.aspx页面中直接执行这个查询,而是希望在 ProductsTableAdapter 和ProductsBLL 中创建一个方法来干这个事情。

2.由于这些信息已经添加到GridView中了,所以可以直接计算 ——就像在“基于数据的自定义格式化”中讨论的那样, 在GridView的数据绑定之后,GridView的RowDataBound事件处理方法会在添加每 一行数据时被执行一次。为这个事件创建了事件处理方法之后,我们就可以保持 一个累积的合计值了。在最后一行数据被绑定到DataGrid上之后,我们就有了一 个合计值以及需要计算平均值的信息了。

一般来说,我还是喜欢第二种方 法的,因为它节省了一次到数据库的往返,而且要达到这个效果还需要在数据访 问层和业务逻辑层中实现统计功能,不过话说回来了,其实两种办法都行的。在 这本教程中,我们还是使用第二个办法吧,并使用RowDataBound事件处理方法来 记录这个累积合计。

给GridView新建一个RowDataBound事件处理方法,你 可以在设计器中选择GridView,然后在属性窗口中点击那个带闪电符号的图标, 找到RowDataBound事件并双击它就可以了。这样就会在 SummaryDataInFooter.aspx页面的后置代码类中添加一个新的名为 ProductsInCategory_RowDataBound的事件处理方法了。

1protected void ProductsInCategory_RowDataBound(object sender, GridViewRowEventArgs e)
2{
3
4}

为 了可以维护一个累积合计,我们需要在这个事件处理方法的外面定义一些变量。 创建以下4个页面级的变量:

· _totalUnitPrice,类型 为decimal

· _totalNonNullUnitPriceCount,类型为 int

· _totalUnitsInStoc

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号