2012-12-21 31 views
1

我正在嘗試在中繼器控件中創建尋呼機。內容正在從數據庫中提取並顯示,但是當我點擊上一個和下一個按鈕時,他們不會翻頁,也就是說,我保持相同的內容。任何人都可以從下面的代碼中看到錯誤嗎?沒有錯誤或顯示出,所以我認爲這是一些輕微的,但我一直在敲打我的頭撞牆試圖找到它中繼器控制分頁錯誤

標記:

<asp:Repeater ID="ArtRepeater" runat="server"> 
<HeaderTemplate> 
    <h2>Items in Selected Category:</h2> 
</HeaderTemplate> 
<ItemTemplate> 
    <li> 
     <asp:HyperLink runat="server" ID="HyperLink" 
      NavigateUrl='<%# Eval("MovieID", "Default2.aspx?ArtID={0}")%>'> 
      <%# DataBinder.Eval(Container.DataItem, "MovieTitle")%> 
     </asp:HyperLink> 
    </li> 
</ItemTemplate> 

代碼背後:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    doPaging() 
End Sub 

Function getTheData() As DataTable 
     Dim DS As New DataSet() 
     Dim strConnect As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & _ 
     Server.MapPath("/App_Data/MovieBoard.accdb")) 
     Dim objOleDBAdapter As New OleDbDataAdapter("SELECT MovieID, MovieTitle FROM Movies", strConnect) 
     objOleDBAdapter.Fill(DS, "Movies") 

     Return DS.Tables("Movies").Copy 
    End Function 

    Sub doPaging() 
     pagedData.DataSource = getTheData().DefaultView 
     pagedData.AllowPaging = True 
     pagedData.PageSize = 1 

     Try 
      pagedData.CurrentPageIndex = Int32.Parse(Request.QueryString("Page")).ToString() 
     Catch ex As Exception 
      pagedData.CurrentPageIndex = 0 
     End Try 

     btnPrev.Visible = (pagedData.IsFirstPage) 
     btnNext.Visible = (Not pagedData.IsLastPage) 

     pageNumber.Text = (pagedData.CurrentPageIndex + 1) & " of " & pagedData.PageCount 

     ArtRepeater.DataSource = pagedData 
     ArtRepeater.DataBind() 
    End Sub 
+0

你什麼時候調用這些函數?回傳,每頁加載等? –

+0

每頁加載。我讓他們打電話,所以內容顯示不是分頁 – user1850189

+0

我看不到doPaging()附加到中繼器 – Melanie

回答

0

把我的頭撞在牆上後,我找到了解決辦法。我忘了將按鈕連接到中繼控制器。這裏有一個解決方案:

Imports System.Data 
Imports System.Data.OleDb 

Partial Class Default2 
Inherits System.Web.UI.Page 

Dim pagedData As New PagedDataSource 

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    doPaging() 
End Sub 

Function getTheData() As DataTable 
    Dim DS As New DataSet() 
    Dim strConnect As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & _ 
    Server.MapPath("/App_Data/MovieBoard.accdb")) 
    Dim objOleDBAdapter As New OleDbDataAdapter("SELECT MovieID, MovieTitle FROM Movies", strConnect) 
    objOleDBAdapter.Fill(DS, "Movies") 

    Return DS.Tables("Movies").Copy 
End Function 

Sub doPaging() 
    pagedData.DataSource = getTheData().DefaultView 
    pagedData.AllowPaging = True 
    pagedData.PageSize = 1 

    Try 
     pagedData.CurrentPageIndex = Int32.Parse(Request.QueryString("Page")).ToString() 
    Catch ex As Exception 
     pagedData.CurrentPageIndex = 0 
    End Try 

    btnPrev.Visible = (Not pagedData.IsFirstPage) 
    btnNext.Visible = (Not pagedData.IsLastPage) 

    If Not pagedData.IsFirstPage Then 
     btnPrev.PostBackUrl = Request.CurrentExecutionFilePath + _ 
             "?Page=" + CStr(pagedData.CurrentPageIndex - 1) 
    End If 

    If Not pagedData.IsLastPage Then 
     btnNext.PostBackUrl = Request.CurrentExecutionFilePath + _ 
             "?Page=" + CStr(pagedData.CurrentPageIndex + 1) 
    End If 

    pageNumber.Text = (pagedData.CurrentPageIndex + 1) & " of " & pagedData.PageCount 

    ArtRepeater.DataSource = pagedData 
    ArtRepeater.DataBind()