【问题标题】:set label text to total row count of gridview将标签文本设置为gridview的总行数
【发布时间】:2011-02-27 10:29:55
【问题描述】:

我在 .aspx 页面上使用 sql 数据库中的存储过程作为 SqlDataSourceControl 的数据源。然后,我使用 SqlDataSourceControl 作为我页面上 gridview 的数据源。在gridview 上分页设置为true。我想做的是将标签的文本设置为gridview中的总行数。我可以使用此代码

'labelRowCount.Text = GridView2.Rows.Count & " layers found"

返回每页的结果数,但它没有给我总数。我找了好几个地方都没有找到解决办法。

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    您应该使用 gridview 绑定到的底层数据源 (grid.DataSource)。例如,如果您已将网格绑定到数据表,那么只需将网格数据源转换为数据表并使用 rows.count 属性来获取总记录数。另一种选择是在将网格数据源对象设置为网格之前获取对网格数据源对象的引用,这样您就可以直接获取记录数。

    例如(假设您绑定到 DataTable)

    int count = ((DataTable)grid.DataSource).Rows.Count;
    

    享受吧!

    【讨论】:

      【解决方案2】:

      在 SQL 数据源的“已选择”上放置一个事件处理程序。该事件处理程序具有 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);
      }
      

      【讨论】:

        【解决方案3】:

        GridView2.Rows 仅保存可见的行,因此当 page-size 为 5 时,您只会获得 5 条记录。正如 Doug 建议的那样,您必须在数据绑定上设置 labelRowCount.Text 而不是在每次回发时设置,因为在回发时 - 当数据源没有再次绑定时 - 数据源将一无所有。所以一个好地方可能是将网格绑定到数据源的地方。

        【讨论】:

          猜你喜欢
          • 2010-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多