2012-09-28 35 views
0

我有一個轉發器列表,它以15個爲一組顯示結果。當您點擊下一個按鈕時,它會顯示下一個15等等。轉發器忘記點擊下一個按鈕時要顯示多少項目

我增加了一些按鈕,然後將篩選顯示,以顯示10個一組,25結果,50

當你點擊這些它的工作,但是當你點擊下一步按鈕將其重置顯示器價值15

下面是腳本塊:

Public Property CurrentPage() As Integer 
    Get 
     ' look for current page in ViewState 
      Dim o As Object = Me.ViewState("_CurrentPage") 


     If o Is Nothing Then 
      Return 0 
     Else 
      ' default to showing the first page 
      Return CInt(o) 
     End If 
    End Get 

    Set 
     Me.ViewState("_CurrentPage") = value 
    End Set 
    End Property 

    Protected Sub ItemsGet() 
     Dim pageSize As Integer = 15 
     ItemsGet(pageSize) 
    End Sub 

    Private Sub ItemsGet(ByVal pageSize As Integer) 
     ' Read sample item info from XML document into a DataSet 

     ' Populate the repeater control with the Items DataSet 
     Dim objPds As New PagedDataSource() 

     Dim selectedCategory As String = ddlCategory.SelectedValue.ToString() 
     Dim selectedCategoryIndex As Integer = ddlCategory.SelectedIndex 

     Dim selectedCategoryMonth As String = ddlCategoryMonth.SelectedValue.ToString() 
     Dim selectedCategoryMonthIndex As Integer = ddlCategoryMonth.SelectedIndex 

     Dim query = GetXmlDataSet() 

     If (Not String.IsNullOrEmpty(selectedCategory) And selectedCategoryIndex > 0) Then 
      query = query.Where(Function(x) x("SCategoryName") = selectedCategory) 
     End If 
     If (Not String.IsNullOrEmpty(selectedCategoryMonth) And selectedCategoryMonthIndex > 0) Then 
      query = query.Where(Function(x) x("SCategoryMonth") = selectedCategoryMonth) 
     End If 

     If (query.Count() > 0) Then 

      objPds.DataSource = query.CopyToDataTable().Rows 
      objPds.AllowPaging = True 
      objPds.PageSize = pageSize 

      objPds.CurrentPageIndex = CurrentPage 

      lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + objPds.PageCount.ToString() 

      ' Disable Prev or Next buttons if necessary 
      cmdPrev.Enabled = Not objPds.IsFirstPage 
      cmdNext.Enabled = Not objPds.IsLastPage 
      Display10.Enabled = True 
      Display25.Enabled = True 
      Display50.Enabled = True 

      categories.DataSource = objPds 
      categories.DataBind() 
     Else 
      CurrentPage = 0 
      categories.Controls.Clear() 
      cmdPrev.Enabled = False 
      cmdNext.Enabled = False 
      Display10.Enabled = False 
      Display25.Enabled = False 
      Display50.Enabled = False 
      lblCurrentPage.Text = "Page: 0 of 0 " 
     End If 
    End Sub 

    Private Sub Display10_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim pageSize As Integer = 10 
     CurrentPage = 0 
     ItemsGet(pageSize) 
    End Sub 

    Private Sub Display25_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim pageSize As Integer = 25 
     CurrentPage = 0 
     ItemsGet(pageSize) 
    End Sub 

    Private Sub Display50_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim pageSize As Integer = 50 
     CurrentPage = 0 
     ItemsGet(pageSize) 
    End Sub 



    Private Sub cmdPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

     ' Set viewstate variable to the previous page 
     CurrentPage -= 1 

     ' Reload control 
     ItemsGet() 
    End Sub 

    Private Sub cmdNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     ' Set viewstate variable to the next page 
     CurrentPage += 1 

     ' Reload control 
     ItemsGet() 
    End Sub 


    Protected Sub ddlCategory_SelectedIndexChanged1(ByVal sender As Object, ByVal e As System.EventArgs) 
     CurrentPage = 0 
     ItemsGet() 
    End Sub 

    Protected Sub ddlCategoryMonth_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) 
     CurrentPage = 0 
     ItemsGet() 
    End Sub 

回答

1

你需要「堅持」項目獲得數。

有幾個方法可以做到這一點....

重因子每頁與後盾屬性保存在視圖狀態,記得適當的默認值初始化。

將ItemsGet子項改爲使用該屬性。

我的vb很生鏽!

Public Property PageSize() As Integer 
    Get 
     If Me.ViewState("PageSize") Is Nothing Then 
      Me.ViewState("PageSize") = 15 
     End If 

     Return CInt(Me.ViewState("PageSize"))  
    End Get 
    Set 
     Me.ViewState("PageSize") = value 
    End Set 
End Property 
+0

這是完美的謝謝! – Jason

相關問題