当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

GridView分组,统计,排序的解决方案

  导言:

  GridView 控件与 DataGrid 相比有了很大的改进,但仍不够完美,比如进行分组(group)和统计(summary).为了实现统计功能,我们可以在 RowDataBound 事件里进行编码;而分组则要复杂一些。如果同时实现这2种功能就更棘手了,基于这个难题我们可以考虑使用 GridViewHelper 类,就像其名称一样,它的用处在于构建分组和统计.

  使用 GridViewHelper

  下面我们将看一些 GridViewHelper 的示例.首先我们展示 groups 和 summaries 创建的方格.该示例的数据来自 Northwind 数据库,做了些许修改:


图1

  要为 ItemTotal 列创建统计功能,我只需要2行代码:

  protected void Page_Load(object sender, EventArgs e)

  {

  GridViewHelper helper = new GridViewHelper(this.GridView1);

  helper.RegisterSummary("ItemTotal", SummaryOperation.Sum);

  }

  首先,我们创建 GridViewHelper,然后对指定的列注册 summary 功能,那么就可以执行 summary 操作了,结果如下图所示.


图2:

  在该示例里,最下面新添加了一行以显示统计结果.不过,我们也可以在页脚行显示统计结果,而用不着新添加一行.不同的是,新添加一行时,只生成一个单元格来显示结果,而在页脚行显示时,所有的单元格都会显示出来.

  现在我们来创建分组,代码如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  GridViewHelper helper = new GridViewHelper(this.GridView1);

  helper.RegisterGroup("ShipRegion", true, true);

  helper.ApplyGroupSort();

  }

  其中,RegisterGroup 方法的第一个参数定义了分组依据,也就是按哪个列来进行分组.当然也可以创建交叉分组(composite group),也就是按照几个列的组合进行分组.第二个参数指定了是否自动分组,就本例而言,为每个组的标头新创建一行.第三个参数指定是否把作为分组依据的那个列强制隐藏.而 ApplyGroupSort 方法将分组依据的那个列作为排序标准(sort expression),就本例而言,自然就是 ShipRegion 了.这么做是很有必要的,因为有可能数据从数据库检索来时已经进行了某种排序.如下图,ShipRegion 列已经被隐藏了:


图3

  让我们来看一些更有趣的事情,向各个分组添加统计功能.如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  GridViewHelper helper = new GridViewHelper(this.GridView1);

  helper.RegisterGroup("ShipRegion", true, true);

  helper.RegisterSummary("ItemTotal", SummaryOperation.Sum, "ShipRegion");

  helper.ApplyGroupSort();

  }

相关内容
赞助商链接