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
Это звучит как проблема с привязкой данных. Может быть, ваш источник данных после обратной передачи пуст?
Работают ли другие мероприятия, как сортировка?
Можете ли вы пройти через обязательную часть кода после обратной передачи и подтвердить, что все данные есть?
У вас есть код, который вы можете опубликовать? Возможно, вам следует создать тестовый комплект, содержащий только те части кода, которые не работают, чтобы попытаться отследить проблему.