您的位置:首页 > 其它

如何获取GridView的总记录数?

2013-03-18 09:47 411 查看
百度了一下,看到有很多人是用这种方法写的:

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

C#代码



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

[c#]
view plaincopyprint?

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

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#代码



protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
lblNum.Text = e.AffectedRows.ToString(); //e.AffectedRows获取的就是总记录数

}

[c#]
view plaincopyprint?

protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
lblNum.Text = e.AffectedRows.ToString();
//e.AffectedRows获取的就是总记录数
}

protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
lblNum.Text = e.AffectedRows.ToString();   //e.AffectedRows获取的就是总记录数
}


本人的方法如下,仅供参考:

private void BindUserList()
{
gvUserList.DataSource = UserBLL.GetUsers();
gvUserList.DataBind();
int pagenum = gvUserList.PageIndex + 1;
DataSet ds = (DataSet)gvUserList.DataSource;
int userCount = ds.Tables[0].Rows.Count;
lblUserCount.Text = userCount.ToString()+"] [第"+pagenum.ToString()+"页/共"+gvUserList.PageCount.ToString()+"页";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: