如何获取GridView的总记录数?(转)
转自:http://wostyh.javaeye.com/blog/313507
用GridView.Rows.Count的话获取的只是当前页的记录数,用GridView.PageSize * GridView.PageCount的话,如果最后一页的记录数不是GridView.PageSize条的话,获取的总记录数就不准确。因此,我们要编写代码判断,如下:
- if (GridView1.PageCount > 0) // 如果页数大于0
- {
- GridView1.PageIndex = GridView1.PageCount - 1; // 将当前显示页的索引转到最后一页
- GridView1.DataBind(); //重新绑定数据,这是十分重要,这样才能到达最后一页
- int lastSize = GridView1.Rows.Count; // 然后获得最后一页的行数
- if (GridView1.PageCount > 1) // 如果页数大于1页,则计算出
- { // 总行数=(总页数-1)* 每页行数 + 最后一页的行数
- int rowsCount = GridView1.PageSize * (GridView1.PageCount - 1) + lastSize;
- recordCount.Text = rowsCount.ToString(); // 将它赋给一个Label
- }
- else
- recordCount.Text = lastSize.ToString(); //如果页数只有一页,则直接将该页的行数赋给Label
- GridView1.PageIndex = 0;
- }
- else recordCount.Text = "0"; // 如果无记录,页显示0
如果用SqlDataSource作为GridView数据源的话,就很简单了,在SqlDataSource的Selected事件中编写如下的代码:
- protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
- {
- lblNum.Text = e.AffectedRows.ToString(); //e.AffectedRows获取的就是总记录数
- }