当前位置: 代码迷 >> Web前端 >> 怎么获取GridView的总记录数
  详细解决方案

怎么获取GridView的总记录数

热度:39   发布时间:2012-09-24 13:49:41.0
如何获取GridView的总记录数?

如何获取GridView的总记录数?

用GridView.Rows.Count的话获取的只是当前页的记录数,用GridView.PageSize * GridView.PageCount的话,如果最后一页的记录数不是GridView.PageSize条的话,获取的总记录数就不准确。因此,我们要编写代码判断,如下:

?

C#代码 复制代码?收藏代码
  1. if?(GridView1.PageCount?>?0)?????//??如果页数大于0 ??
  2. { ??
  3. ??
  4. ??????GridView1.PageIndex?=?GridView1.PageCount?-?1;???//??将当前显示页的索引转到最后一页? ??
  5. ????GridView1.DataBind();?????????//重新绑定数据,这是十分重要,这样才能到达最后一页 ??
  6. ????int?lastSize?=?GridView1.Rows.Count;???????????//??然后获得最后一页的行数 ??
  7. ????if?(GridView1.PageCount?>?1)?????//??如果页数大于1页,则计算出 ??
  8. ????{???????????????????????????????????????????????????????//??总行数=(总页数-1)*?每页行数?+??最后一页的行数 ??
  9. ????????int?rowsCount?=?GridView1.PageSize?*?(GridView1.PageCount?-?1)?+?lastSize; ??
  10. ????????????recordCount.Text?=?rowsCount.ToString();??????//??将它赋给一个Label ??
  11. ??????} ??
  12. ???else? ??
  13. ????????????recordCount.Text?=?lastSize.ToString();???//如果页数只有一页,则直接将该页的行数赋给Label ??
  14. ????????????GridView1.PageIndex?=?0;?????????? ??
  15. ???} ??
  16. ???else?recordCount.Text?=?"0";?????//??如果无记录,页显示0??
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事件中编写如下的代码:

C#代码 复制代码?收藏代码
  1. protected?void?SqlDataSource1_Selected(object?sender,?SqlDataSourceStatusEventArgs?e) ??
  2. { ??
  3. ????????lblNum.Text?=?e.AffectedRows.ToString();???//e.AffectedRows获取的就是总记录数 ??
  4. }??
protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
        lblNum.Text = e.AffectedRows.ToString();   //e.AffectedRows获取的就是总记录数
}

?

  相关解决方案