0

UpdatePanel 内に 3 つの DataPager が関連付けられた ListView があります。

最初の DataPager は、前のページへのリンクを表示するだけです。

<asp:DataPager ID="dpPrev" runat="server" PagedControlID="lvExperiences" QueryStringField="page" PageSize="4">
  <Fields>
    <asp:NextPreviousPagerField ShowNextPageButton="false" ButtonCssClass="PagePrev" />
  </Fields>
</asp:DataPager>

2 つ目は、通常のページ順序です。

<asp:DataPager ID="dpList" runat="server" PagedControlID="lvExperiences" QueryStringField="page" PageSize="4">
  <Fields>
    <asp:NumericPagerField ButtonType="Link" CurrentPageLabelCssClass="PageCurrent" />
  </Fields>
</asp:DataPager>

最後は次のページへのリンクです。

<asp:DataPager ID="dpNext" runat="server" PagedControlID="lvExperiences" QueryStringField="page" PageSize="4">
  <Fields>
    <asp:NextPreviousPagerField ShowPrevPageButton="false" ButtonCssClass="PagePrev" />
  </Fields>
</asp:DataPager>

そのコントロールを別々に配置したので、最初/最後のページにいるかどうかに応じて、コード ビハインドで前/次のリンクを無効にできます。

Protected Sub lvExperiences_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvExperiences.DataBound
    Dim page As Integer = 1
    If Not Request("page") Is Nothing Then
        page = Integer.Parse(Request("page"))
    End If
    dpPrev.Visible = ((dpPrev.PageSize * page) > dpPrev.TotalRowCount And (page > 1))
    dpNext.Visible = ((dpNext.PageSize * page) < dpNext.TotalRowCount)
End Sub

それは完全に機能しますが、そのような DataPager は を追加するために URL を変更し?page=X、完全なPostBack. DataBoundからメソッドとQueryStringField属性を削除すると、その仕事DataPagerが行われ、 .UpdatePanelListView

QueryStringField属性を使用せずに現在のページを知る方法を知っている人はいますか?

おかげで多くの、

4

1 に答える 1

1

これを試して:

Protected Sub lvExperiences_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvExperiences.DataBound
   dpPrev.Visible = dpPrev.StartRowIndex > 0
   dpNext.Visible = (dpNext.StartRowIndex + dpNext.PageSize) < dpNext.TotalRowCount
End Sub
于 2012-11-27T15:16:21.493 に答える