0

I´m trying to work with paging for my GridView but I get an error: "The data source does not support server-side data paging".

I do not understand what I'm doing wrong....

HTML (ASPX markup):

<asp:GridView ID="gwActivity" runat="server" AutoGenerateColumns="False" AllowPaging="True" OnRowCommand="gwActivity_RowCommand" CssClass="gwActivity" OnPageIndexChanging="gwActivity_PageIndexChanging">................[Plus more]

Code behind:

public void BindGridviewActivity()
{
    /*************Connectionstring is located in Web.config ******************/
    string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

    using (SqlConnection con = new SqlConnection(CS))
    {
        SqlCommand cmd = new SqlCommand("SELECT T1.[ActivityID] FROM [BI_Planning].[dbo].[tlbActivity]", con);
        con.Open();
        gwActivity.DataSource = cmd.ExecuteReader();
        gwActivity.DataBind();
    }
}

Code behind (GridView):

protected void gwActivity_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gwActivity.PageIndex = e.NewPageIndex;
    BindGridviewActivity();

}
Tetsuya Yamamoto
  • 24,297
  • 8
  • 39
  • 61
Nils
  • 516
  • 3
  • 9
  • 33
  • 1
    Possible duplicate of [The data source does not support server-side data paging](https://stackoverflow.com/questions/1661292/the-data-source-does-not-support-server-side-data-paging) – Sunil Apr 03 '18 at 08:12

1 Answers1

1

The exception most possibly come from this line:

gwActivity.DataSource = cmd.ExecuteReader();

AFAIK, SqlDataReader used by ExecuteReader() method can't be used to bind as GridView data source because it is forward-only reader and doesn't support paging feature. Use another data source like SqlDataAdapter which support bi-directional data reading as given below:

public void BindGridviewActivity()
{
    /*************Connectionstring is located in Web.config ******************/
    string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

    using (SqlConnection con = new SqlConnection(CS))
    {
        SqlCommand cmd = new SqlCommand("SELECT T1.[ActivityID] FROM [BI_Planning].[dbo].[tlbActivity]", con);
        con.Open();

        var da = new SqlDataAdapter(cmd);
        var ds = new DataSet();
        da.Fill(ds);

        if (ds.Tables.Count > 0)
        {
            gwActivity.DataSource = ds.Tables[0];
            gwActivity.DataBind();
        }
    }
}
Tetsuya Yamamoto
  • 24,297
  • 8
  • 39
  • 61