.NET Gridview Paging отображает различный контент на следующих страницах - PullRequest
0 голосов
/ 11 мая 2011

У меня есть 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 вот как я заполняю источник данных. Это из пользовательского запроса, построенного в строке tempSqlStr:

SqlDataSource1.SelectCommand = tempSqlStr
If Not Page.IsPostBack Then
     GV1.DataBind()
End If

Кажется, все работает, я получаю результаты, разбитые на 25 записей, я могу перемещаться по страницам. Но то, что я узнал, это то, что содержимое страниц меняется, когда я перемещаюсь между ними. Количество записей не меняется, но я вижу запись, которую я видел на первой странице снова через секунду, когда я возвращаюсь на первую страницу, а затем снова на вторую страницу, содержимое второй страницы изменяется, и я вижу другой набор записей.

Я напечатал значение tempSqlStr для всех страниц, оно одинаково на всех страницах (оно не в части "not page.ispostback").

Может ли это быть потому, что я создаю tempSqlStr в секции Page_Load, а GV1_PageIndex_Changing не может видеть значение? Если это так, то почему на следующих страницах показывается запись?

Любой комментарий приветствуется. Спасибо.

1 Ответ

0 голосов
/ 11 мая 2011

Скорее всего, проблема в том, что вы не заказываете возвращенные результаты, и именно поэтому.Выполните ваш оператор выбора 5 раз и посмотрите, совпадают ли результаты, и вы узнаете, так ли это.Если это так, добавьте заказ в вашем запросе.Дайте мне знать, если это решило вашу проблему, иначе мы можем посмотреть дальше ...

...