Place the repeater control inside the PagerTemplate as follows:
<PagerTemplate>
<asp:Repeater ID="repFooter" OnItemCommand="repFooter_ItemCommand" runat="server">
<HeaderTemplate>
<div class="pager">
</HeaderTemplate>
<ItemTemplate>
<div class="page">
<asp:LinkButton ID="lnkPage" Text='<%# Container.DataItem %>' CommandName="ChangePage" CommandArgument="<%# Container.DataItem %>" runat="server" />
</div>
</ItemTemplate>
<FooterTemplate>
<div class="clear"></div>
</div>
</FooterTemplate>
</asp:Repeater>
</PagerTemplate>
Then add an event handler for the Grid DataBound event, which sets up the data source for the repeater as follows:
protected void GridView1_DataBound(object sender, EventArgs e)
{
GridViewRow pagerRow = GridView1.BottomPagerRow;
if (pagerRow != null)
{
Repeater repFooter = (Repeater)pagerRow.Cells[0].FindControl("repFooter");
List<int> pages = new List<int>();
for (int i = 0; i < GridView1.PageCount; i++)
{
pages.Add(i + 1);
}
repFooter.DataSource = pages;
repFooter.DataBind();
}
}
ItemCommand :
protected void repFooter_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "ChangePage")
{
GridView1.PageIndex = Convert.ToInt32(e.CommandArgument) - 1;
}
}
MSDN, :
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.pagertemplate.aspx