怎样获取gridview中数据总行数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样获取gridview中数据总行数相关的知识,希望对你有一定的参考价值。

就是GirdView当前页的所有数据总共有多少行,分页的不算。

参考技术A //一般用于循环中,i<行数
for(int i=0; i < GridView1.Rows.Count ; i++)

//代码
参考技术B 额 其实你这个就只要判断是否为最后一页 如果是最后一页 你就
GridView1.Rows.Count-GridView1.PageSize*(GridView1.PageCount-1))
如果不是 就显示 GridView1.PageSize
参考技术C if(GridView1.PageIndex<GridView1.PageCount-1)
return GridView1.PageSize
else
return GridView1.Rows.Count-(GridView1.PageSize*(GridView1.PageCount-1))
参考技术D //总行数
GridView1.Rows.Count
第5个回答  2009-07-25 dataGridView1.RowCount

GridView 控件中使用 LinqDataSource 和分页的总行数

【中文标题】GridView 控件中使用 LinqDataSource 和分页的总行数【英文标题】:Total row count in GridView control using LinqDataSource and paging 【发布时间】:2010-09-06 20:42:14 【问题描述】:

我在获取使用 Paging 并使用 LinqDataSource 作为数据源的 Gridview 中显示的项目的总行数时遇到问题。

我尝试了几种方法:

protected void GridDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e)  
  
    totalLabel.Text = e.TotalRowCount.ToString();  

每次都返回 -1。

protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)  
  
    System.Collections.Generic.List<country> lst  = e.Result as System.Collections.Generic.List<country>;  
    int count = lst.Count;  

只给我当前页面的计数,而不是总数。

还有其他建议吗?

【问题讨论】:

【参考方案1】:

在这些事件中返回的 LinqDataSourceEventArgs 在这些情况下返回 -1:

-1 如果 LinqDataSourceStatusEventArgs 对象是在数据修改操作期间创建的; -1 如果您通过将 AutoPage 设置为 true 并将 RetrieveTotalRowCount 设置为 false 来启用自定义分页。

Check here for more information - 底部的表格显示了要设置的不同属性以恢复行数,但看起来您必须将 AutoPage 和 AllowPage 属性设置为 true 或 false。

从上面链接中的表格和您提供的示例来看,您将 Autopage 设置为 false,但 AllowPaging 设置为 true,因此它返回页面中的行数。

HTH

【讨论】:

【参考方案2】:

TotalRowCount 属性仅对 AutoPage 和 AllowPaging 的某些值有效。它们都应该是真的(在你的情况下)或者都是假的。

查看以下页面了解 TotalRowCount 属性。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linqdatasourcestatuseventargs.totalrowcount.aspx

【讨论】:

【参考方案3】:

好吧,我已经将 AutoPage 和 AllowPaging 设置为 true。 我已通过在调试模式下检查其值确认 RetrieveTotalRowCount 设置为 true(找不到更改其值的位置)。

它仍然返回 -1。

唯一缺少的是:

-1 如果 LinqDataSourceStatusEventArgs 对象是在数据修改操作期间创建的;

我不太确定这意味着什么。 我正在使用 LinqDataSource 的修改版本来启用一些自定义过滤,所以这可能是问题所在。另一方面,在调试模式下搞砸时,我确实设法检查了 arguments.TotalRowCount 的值,它是正确的。但是在 Selected 事件中出现的值始终是 -1。

【讨论】:

【参考方案4】:

我遇到了同样的问题。我用以下代码行解决了我的问题

protected void LinqDataSourcePoints_Selected(object sender, LinqDataSourceStatusEventArgs e) totalRecords = (e.Result as List).Count;

说明: 1-将 e.Result 解析为您的数据源 2-获取计数。

为我工作完美。

【讨论】:

【参考方案5】:

试试这个,我已经测试过了,它会返回所有的行。

  protected void LinqDataSource1_Selecting(object sender, LinqDataSourceStatusEventArgs e)
        
           System.Collections.Generic.List<country> lst  = e.Result as System.Collections.Generic.List<country>;

           int count = lst.Count;
        

确保您的活动是“Selecting

【讨论】:

这是一个非常糟糕的解决方案,因为它会导致从服务器拉取所有记录。

以上是关于怎样获取gridview中数据总行数的主要内容,如果未能解决你的问题,请参考以下文章

如何获取DataGrid的总行数

获取表的 ID 及其模尊重 Postgres 中同一表中的总行数

vb.net中怎样求DataGridView的行数和列数?

如何从分页的 ef 核心查询中获取可用的总行数

如何在特定模式中的所有表的选择列表中获取总行数和最大(时间戳)列

单个 mysqli 查询语句来获取总行数和限制