我在一个启用了分页的页面中有一个GridView(排序未启用,未使用)。分配了OnRowDataBound和OnPageIndexChanged事件。
<asp:GridView ShowHeader="False" ID="GV1" runat="server" AutoGenerateColumns="False" OnRowDataBound="gridView_RowDataBound" DataSourceID="SqlDataSource1" GridLines="None" CellPadding="0" PageSize="25" AllowPaging="True" OnPageIndexChanging="GV1_PageIndexChanging">
数据源在gridview下方分配为:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:my_connectionstring %>"></asp:SqlDataSource>
OnRowDataBound用于以格式化方式显示内容。我不认为它会导致任何问题:
Protected Sub gridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs).....
PageIndexChanging定义如下:
Protected Sub GV1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs)
GV1.PageIndex = e.NewPageIndex
GV1.DataBind()
End Sub
在Page_Load Part中,我是如何填充数据源的。它来自在字符串tempSqlStr:
中构造的自定义查询SqlDataSource1.SelectCommand = tempSqlStr
If Not Page.IsPostBack Then
GV1.DataBind()
End If
一切似乎都在起作用,我将结果分为25条记录,我可以浏览页面。但我所认识到的是,当我在它们之间移动时,页面的内容正在发生变化。记录的数量没有变化,但我可以看到我在第一页上再次看到的记录,当我回到第一页然后再次到第二页内容的第二页更改时,我看到一组不同的记录。 / p>
我已经将tempSqlStr值打印到所有页面,它在所有页面上都是相同的(它不在“not page.ispostback”部分中)。
是不是因为我在Page_Load部分构造tempSqlStr并且GV1_PageIndex_Changing看不到值?如果这是为什么后面的页面显示记录?
任何评论都表示赞赏。谢谢。
答案 0 :(得分:0)
问题很可能是你没有订购返回的结果,这就是原因。执行你的select语句5次,看看结果是否相同,你会知道它是否是这个。如果是,则在查询中添加订单。如果这解决了您的问题,请告诉我,否则我们可以进一步了解......