ASP.NET Gridview Пейджинговая проблема

У меня есть gridview, который привязан к данным в коде позади с помощью хранимой процедуры. Я также обрабатываю событие Paging в коде, но всякий раз, когда я нажимаю на номер страницы, я продолжаю получать пустой шаблон данных вместо большего количества строк. Какие-либо предложения?

РЕДАКТИРОВАТЬ: я повторно привязать источник данных gv после изменения индекса страницы.

Вот мой код - у меня есть выпадающий список, который определяет, что источник данных:

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 <> "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

3 ответа

Решение

Вы привязываете пустой источник данных. Ваш код должен читать:

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.DataSource = __The_Data_To_Bind__
    Me.gvAllSentData.DataBind()
End Sub

Как бы глупо это не звучало, вы не забыли снова вызвать свой код привязки данных? Когда происходит подкачка страниц, выполняется обратная запись, и источник данных для вашего GridView теряется, поэтому вам нужно будет повторно привязать данные, чтобы GridView мог загрузить соответствующие данные на основе страницы.

Я думаю, что это было мое второе или третье приложение ASP.NET, которое я написал до того, как вспомнил о повторной привязке данных при первом написании кода 8^D

Это звучит как проблема с привязкой данных. Может быть, ваш источник данных после обратной передачи пуст?

Работают ли другие мероприятия, как сортировка?

Можете ли вы пройти через обязательную часть кода после обратной передачи и подтвердить, что все данные есть?

У вас есть код, который вы можете опубликовать? Возможно, вам следует создать тестовый комплект, содержащий только те части кода, которые не работают, чтобы попытаться отследить проблему.

Другие вопросы по тегам