计算启用分页的网格视图中的条目数

时间:2015-03-05 04:39:14

标签: c# asp.net gridview

我有一个TextBox,其中我想显示GridView中的条目数。

count2.Text += (GV.Rows.Count).ToString();

启用了分页,但它只计算第一页中的条目。

如何确保计算所有条目?

我试过了:

         <asp:SqlDataSource ProviderName="System.Data.SqlClient" ID = "sourceProducts" runat = "server" ConnectionString =" <%$ ConnectionStrings:DB %> " SelectCommand = "myqueryhere"  OnSelected="sourceProducts_Selected">




protected void sourceProducts_Selected(object sender, SqlDataSourceStatusEventArgs e)
    {
        z = e.AffectedRows;
    }

但这给了我一些错误的价值

3 个答案:

答案 0 :(得分:0)

退后一步。你从哪里得到数据?如果绑定到数据表,则只计算那里的行。如果使用start和end行的参数调用存储过程并返回表,请将其更改为发回数据集。数据集中的第一个表是您的数据,第二个表是一个只包含计数的表。

答案 1 :(得分:0)

您可以使用SQLDataSource的已选事件,并使用Affected属性获取记录数,如下所示: -

protected void sourceProducts_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
    count2.Text = e.AffectedRows.ToString();
}

修改

protected void Page_Load(object sender, EventArgs e)
{
    System.Data.DataView dataView = (DataView)sourceProducts
                                              .Select(DataSourceSelectArguments.Empty);
    count2.Text = dataView .Count.ToString();
}

答案 2 :(得分:0)

请检查一下,selected method

会产生什么结果
protected void sourceProducts_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
int startRowOnPage = (GridView1.PageIndex * GridView1.PageSize) + 1;
    int lastRowOnPage = startRowOnPage + GridView1.Rows.Count - 1;
    int totalRows = e.AffectedRows;

    count2.Text = "Showing " + startRowOnPage.ToString() +
                  " - " + lastRowOnPage + " of " + totalRows;
}

检查此链接

Total Row Count SqlDataSource GridView

Records count in asp.net gridview with SQL data source & Paging

或者您可以将row_number列添加为rowcount,如

select row_number() over(order by pin) a , others column from yourtable