.NET Gridview Paging在后续页面上显示不同的内容

时间:2011-05-11 10:02:40

标签: vb.net gridview paging data-binding

我在一个启用了分页的页面中有一个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看不到值?如果这是为什么后面的页面显示记录?

任何评论都表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

问题很可能是你没有订购返回的结果,这就是原因。执行你的select语句5次,看看结果是否相同,你会知道它是否是这个。如果是,则在查询中添加订单。如果这解决了您的问题,请告诉我,否则我们可以进一步了解......