.NET开发中我们最常用到的一个数据控件就是GridView了,官方赋予了他很多很多的功能,让我们针对数据进行列表显示及处理轻而易举,但是也会遇到官方没有给定的一些功能,需要我们自己动脑去思考实现
GridView.Rows.Count
获取的只是当前页的记录数,所以只能通过我们自己来解决了。GridView.PageSize * GridView.PageCount
来推算,但是如果最后一页的记录数不是 GridView.PageSize
条的话(相信自己写过分页算法的人都能理解,最后一页可能只有1条数据或者几条数据的可能),获取的总记录数就不准确,需要我们针对最后一页做特殊处理,代码如下:string totalRecord = "0"; // 如果无记录,默认显示0 if(GridViewContainer.PageCount > 0) // 如果页数大于0 { GridViewContainer.PageIndex = GridViewContainer.PageCount - 1; // 将当前显示页的索引转到最后一页 GridViewContainer.DataBind(); //重新绑定数据,这行代码十分重要,这样才能到达最后一页 int lastSize = GridViewContainer.Rows.Count; // 然后获得最后一页的行数 if(GridViewContainer.PageCount > 1) //如果页数大于1页,则计算出 { // 总行数=(总页数-1)* 每页行数 + 最后一页的行数 int rowsCount = GridViewContainer.PageSize * (GridViewContainer.PageCount - 1) + lastSize; totalRecord = rowsCount.ToString(); } else { totalRecord = lastSize.ToString(); //如果页数只有一页,则直接将该页的行数赋给Label } GridViewContainer.PageIndex = 0; }
GridView
中使用SqlDataSource
作为数据源的话,可以通过在SqlDataSource
的Selected
事件中编写如下的代码即可获得总记录数量:protected void SqlDataSourceID_Selected(object sender, SqlDataSourceStatusEventArgs e) { string totalRecord = e.AffectedRows.ToString(); //e.AffectedRows获取的就是总记录数 }
GridView
的数据源对象中保存的数据就是所有的记录数量,那么我们可以直接获取它的数据源对象就可以得到了,代码如下:DataSet ds = (DataSet)GridView1.DataSource; int rowCount = ds.Tables[0].Rows.Count;
GridView
的数据源中提取出对应查询语句,然后根据此查询语句来构建一个查询总记录的SQL语句即可