ASP.NET Gridview Пейджинговая проблема - PullRequest
2 голосов
/ 24 февраля 2009

У меня есть сетка, которая привязана к данным в коде с помощью хранимой процедуры. Я также обрабатываю событие 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 ]

7 голосов
/ 24 февраля 2009

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

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
0 голосов
/ 24 февраля 2009

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

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

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

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

0 голосов
/ 24 февраля 2009

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

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

...