Custom Controls ASP.Net Tutorial

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myControls
{
    public class Pager : WebControl, IPostBackEventHandler
    {
        string _controlToPage;
        public string ControlToPage
        {
            get { return _controlToPage; }
            set { _controlToPage = value; }
        }
        protected override void RenderContents(HtmlTextWriter writer)
        {
            GridView grid = GetControlToPage();
            for (int i = 0; i < grid.PageCount; i++)
            {
                string eRef = Page.ClientScript.GetPostBackClientHyperlink(this, i.ToString());
                writer.Write("[");
                if (i == grid.PageIndex)
                   writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, eRef);
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("{0}", i + 1);
                writer.RenderEndTag();
                writer.Write("] ");
            }
        }
        private GridView GetControlToPage()
        {
            if (String.IsNullOrEmpty(_controlToPage))
                throw new Exception("Must set ControlToPage property");
            return (GridView)Page.FindControl(_controlToPage);
        }
        public void RaisePostBackEvent(string eventArgument)
        {
            GridView grid = GetControlToPage();
            grid.PageIndex = Int32.Parse(eventArgument);
        }
    }
}
File: Default.aspx
<%@ Page Language="C#" %>
<%@ Register TagPrefix="custom" Namespace="myControls" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


    Show CustomPager


    
    

            id="GridView1"
        DataSourceID="srcProducts"
        AllowPaging="true"
        PageSize="3"
        PagerSettings-Visible="false"
        Runat="server" />
            id="Pager1"
        ControlToPage="GridView1"
        Runat="server" />
            id="srcProducts"
        ConnectionString="Data Source=.\SQLExpress;Integrated Security=True;
            AttachDbFileName=|DataDirectory|MyDatabase.mdf;User Instance=True"
        SelectCommand="SELECT Id,Title,Director FROM Products"
        Runat="server" />