我在sql数据库中使用存储过程作为我的.aspx页面上SqlDataSourceControl的数据源。然后我使用SqlDataSourceControl作为我页面上gridview的数据源。在gridview上将分页设置为true。我想要做的是将标签的文本设置为gridview中的总行数。我可以使用这段代码
'labelRowCount.Text = GridView2.Rows.Count & " layers found"
返回每页的结果数,但它不会给我总数。我已经在几个地方看了一下,并没有成功找到解决方案。
答案 0 :(得分:3)
您应该使用gridview绑定的基础数据源(grid.DataSource)。例如,如果已将网格绑定到数据表,则只需将网格数据源转换为数据表,然后使用rows.count属性获取总记录数。另一种方法是在将网格设置为网格之前获取对网格数据源对象的引用,以便直接获取记录计数。
例如(假设您绑定到DataTable)
int count = ((DataTable)grid.DataSource).Rows.Count;
享受!
答案 1 :(得分:2)
为SQL DataSource选择“selected”的事件处理程序。该事件处理程序的参数类型为SqlDataSourceStatusEventArgs。在那里,AffectedRows是整个数据集的行数(不仅仅是当前页面上显示的行数)。所以抓住它并写出你的标签:
protected void SqlDataSource_Selected(object sender,SqlDataSourceStatusEventArgs e)
{
if (e.Exception != null)
{
// do something useful, then...
e.ExceptionHandled = true;
}
else
labelRowCount.Text = String.Format("{0} layers found", e.AffectedRows);
}
答案 2 :(得分:0)
GridView2.Rows仅保存可见的行,因此当page-size为5时,您只能获得5条记录。正如Doug建议你必须设置labelRowCount.Text ondatabound而不是每次回发,因为在回发时 - 当数据源没有再次绑定时 - 数据源将不会是什么。因此,将网格绑定到数据源的位置可能是个好地方。