我有一个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
答案 0 :(得分:7)
您正在重新绑定空数据源。您的代码应为:
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
答案 1 :(得分:0)
听起来很傻,你还记得再次调用你的数据绑定代码吗?当发生分页时,会发回一个帖子,并且GridView的数据源会丢失,因此您需要再次重新绑定数据,以便GridView可以根据页面加载适当的数据。
我认为这是我写的第二个或第三个ASP.NET应用程序之前我记得第一次重新编写代码时编写代码8 ^ D
答案 2 :(得分:0)
听起来像数据绑定问题。回发后你的数据源可能是空的吗?
其他事件如排序工作吗?
您可以在回发后单步执行代码的绑定部分并确认数据全部存在吗?
您有可以发布的任何代码吗?也许您应该创建一个测试工具,其中只包含无法尝试的代码部分并追踪问题。