Recently I came across a Requirement where I was needed to add the Paging functionality to the repeater Control because the repeater control didn't have the built in functionality for paging.
One can achieve so by following the below mentioned process:
At the source code add the following code :
<asp:Repeater ID="rptXYZ" runat="server">
..........Your repeter content
</Asp:Repeater >
<table>
<tr>
<td><asp:button id="cmdPrev" runat="server" text=" << "></asp:button> </td>
<td> <asp:Panel id="PnlNumber" runat="server"></asp:Panel> </td>
<td> <asp:button id="cmdNext" runat="server" text=" >> "></asp:button> </td>
</tr>
</table>
Here a panel is added to insert a link button dynamically. At the code behind, add the following code :
At gobal declaration
Dim objPds As New PagedDataSource
Create one property as
Public Sub showPagination()
Dim XYZDS As New DataSet
XYZDS = Session("XYZDS")
'' Populate the repeater control with the Items DataSet
If Not XYZDS Is Nothing Then
If Not (XYZDS.Tables("Table1") Is Nothing) Then
Dim ilnkno As Double
Dim Pagerpagesize As Integer
Pagerpagesize = 3
'' (any) Number of record to show at one go
ilnkno = XYZDS.Tables("Table1").Rows.Count / Pagerpagesize
'' ilnkno is Number of link buttons to add
ilnkno = Math.Ceiling(ilnkno)
For index As Integer = 1 To ilnkno
Dim lnkbtn As New LinkButton
lnkbtn.Text = index
lnkbtn.ID = "lnkbtn" + index.ToString()
AddHandler lnkbtn.Click, AddressOf lnkbtn_Click
PnlNumber.Controls.Add(lnkbtn)
Next
objPds.DataSource = XYZDS.Tables("Table1").DefaultView
'' Indicate that the data should be paged
objPds.AllowPaging = True
'' Set the number of items you wish to display per page must be same
''as Pagerpagesize
objPds.PageSize = 3
objPds.CurrentPageIndex = CurrentPage - 1
'' CurrentPage is property to set index
Repeterxyz.Datasource= objPds
' Binding paged data to repeter
End If
End If
End Sub
Note
Dynamically created controls may disappear on the post back, you require to call the pagination function on the init/load event as per the requirement.