title: ASP.NET Gridview Paging Problem
body: <p>I have a gridview that is databound in the code-behind using a stored procedure.  I am handling the Paging event in the code as well, but whenever I click on a page number, I keep getting the empty data template instead of more rows.  Any suggestions?</p>
  
  <p>EDIT: I am re-binding the data source of the gv after I change the page index.</p>
  
  <p>Here is my code - I have a dropdown list that determines what the data source is:</p>
  
  <pre><code>Protected Sub ddlProjectForm_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlProjectForm.SelectedIndexChanged
      Dim strProjectFormID As String = Me.ddlProjectForm.SelectedValue
      Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("Conn").ConnectionString)
      Dim cmd As New SqlCommand()
      Dim da As New SqlDataAdapter
      Dim ds As New DataSet
  
      If strProjectFormID &lt;&gt; "Select" Then
          Try
              Using conn
                  conn.Open()
  
                  With cmd
                      .Connection = conn
                      .CommandType = CommandType.StoredProcedure
                      .CommandText = "sp_GetAllFormData"
                      .Parameters.AddWithValue("@projectFormID", strProjectFormID)
                  End With
  
                  da.SelectCommand = cmd
                  da.Fill(ds)
  
                  Me.gvAllSentData.DataSource = ds.Tables(0)
                  Me.gvAllSentData.DataBind()
                  Me.gvAllSentData.Visible = True
              End Using
          Catch sqlEx As SqlException
              Dim newError As New ErrorLogger(Me.Page.Title, sqlEx.Message, Session("UserName"))
              newError.LogError()
  
              Trace.Write(sqlEx.Message)
              Me.lblBadFeedback.Visible = True
              Me.lblBadFeedback.Text = "We're sorry - an error has occurred.  It has been logged and will be reviewed by the site admin."
          Catch ex As Exception
              Dim newError As New ErrorLogger(Me.Page.Title, ex.Message, Session("UserName"))
              newError.LogError()
  
              Trace.Write(ex.Message)
              Me.lblBadFeedback.Visible = True
              Me.lblBadFeedback.Text = "We're sorry - an error has occurred.  It has been logged and will be reviewed by the site admin."
          End Try
      Else
          Me.gvAllSentData.DataSource = Nothing
          Me.gvAllSentData.Visible = False
      End If
  
  End Sub
  
  Protected Sub gvAllSentData_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvAllSentData.PageIndexChanging
      Me.gvAllSentData.PageIndex = e.NewPageIndex
      Me.gvAllSentData.DataBind()
  End Sub
  </code></pre>