我搜索了堆栈溢出和谷歌,但我找不到适用于我的情况的答案,我尝试了很多。
我遇到了ASP.NET gridview的问题。页面首次加载时,网格附加到数据源ID,并显示带有分页的记录。
现在,如果用户过滤了数据,则会显示返回记录的第一页,但如果他们点击gridview页脚中的“第2页”页面会闪烁,但不会更改数据或页面。
此外,我注意到在应用搜索时,无论返回多少条记录,页脚都会显示10多页。
这是ASP.NET GridView头代码:
<asp:GridView ID="gvSOHeader" runat="server"
AutoGenerateColumns="False" Width="1010px" CellPadding="4"
ForeColor="#333333" GridLines="Horizontal" AllowSorting="True"
AllowPaging="True" OnPageIndexChanging="gvSOHeaderOnPageIndexChanging"
PageSize="15" DataSourceID="SqlDataSource2">
当用户在此处搜索时,是重新分配网格视图数据源的代码:
Using conn As New SqlConnection(myConnection)
conn.Open()
Using sqlCmd As New SqlCommand
sqlCmd.CommandText = strText
sqlCmd.Connection = conn
Using sqlDA As New SqlDataAdapter(sqlCmd)
Using sqlDT As New DataTable
sqlDA.Fill(sqlDT)
If sqlDT.Rows.Count > 0 Then
gvSOHeader.DataSourceID = String.Empty
gvSOHeader.DataSource = Nothing
gvSOHeader.DataSource = sqlDT
gvSOHeader.DataBind()
End If
End Using
End Using
End Using
conn.Close()
End Using
这样可行但只是显示返回结果的第一页。我无法访问任何其他结果页面。
这是OnPageIndexChanging事件代码:
Protected Sub gvSOHeaderOnPageIndexChanging(sender As Object, e As GridViewPageEventArgs) Handles gvSOHeader.PageIndexChanging
gvSOHeader.PageIndex = e.NewPageIndex
gvSOHeader.DataBind()
End Sub
我也注意到OnPgeIndexChanging事件触发了两次,但我不知道为什么。我尝试将On语句添加到OnPageIndexChanging以检查Not IsPostback,但它仍然不会显示超过搜索数据的第一页。
我很抱歉,如果这是重复但我找不到符合我情况的结果。任何帮助都会得到很大的帮助。 感谢。