自己做的三个按钮分别为上一页、下一页、跳至,还有一个文本框,两个标签Session["dt"]为源数据DT
gv为源GridView 
    //上一頁
    protected void btn_pre_Click(object sender, EventArgs e)
    {
        pre_page(gv);
    }
protected void pre_page(GridView gv)
    {
        int totalpage = 1;
        if (((DataTable)Session["dt"]).Rows.Count % pagesize != 0)
        {
            totalpage = ((DataTable)Session["dt"]).Rows.Count / pagesize + 1;
        }
        else
        {
            totalpage = ((DataTable)Session["dt"]).Rows.Count / pagesize;
        }
        if (gv.PageIndex > 0)
        {
            gv.PageIndex -= 1;
            gv_bind();
            lb_show.Text = "頁碼: <strong style='color:blue'>" + (gv.PageIndex + 1) + "/" + totalpage + "</strong>";
        }
        else
        {
            new Tool().WarningDialog("已到達第一頁!");
        }
    }
    //下一頁
    protected void btn_next_Click(object sender, EventArgs e)
    {
         next_page(gv); 
    }
    protected void next_page(GridView gv)
    {
        int totalpage = 1;
        if (((DataTable)Session["dt"]).Rows.Count % pagesize != 0)
        {
            totalpage = ((DataTable)Session["dt"]).Rows.Count / pagesize + 1;
        }
        else
        {
            totalpage = ((DataTable)Session["dt"]).Rows.Count / pagesize;
        }        if (gv.PageIndex < totalpage - 1)
        {
            gv.PageIndex += 1;
            gv_bind();            
            lb_show.Text = "頁碼: <strong style='color:blue'>" + (gv.PageIndex + 1) + "/" + totalpage + "</strong>";
        }
        else
        {
            new Tool().WarningDialog("已到達最後一頁!");
        }
    }    //跳至指定頁
    protected void btn_goto_Click(object sender, EventArgs e)
    {
        int totalpage = 1;
        if (((DataTable)Session["dt"]).Rows.Count % pagesize != 0)
        {
            totalpage = ((DataTable)Session["dt"]).Rows.Count / pagesize + 1;
        }
        else
        {
            totalpage = ((DataTable)Session["dt"]).Rows.Count / pagesize;
        }        int go = 0;
        try
        {
            go = Convert.ToInt32(tb_goto.Text.Trim());
        }
        catch
        {
            new Tool().WarningDialog("請輸入一個整數!");
            return;
        }
        if (go < totalpage + 1 && go > 0)
        {            gv.PageIndex = go - 1;
            gv_bind();
            lb_show.Text = "頁碼: <strong style='color:blue'>" + go + "/" + totalpage + "</strong>";
        }
        else
        {
            new Tool().WarningDialog("超出頁面範圍!");
        }
    }
protected void gv_bind()
    {        
        DataView view = ((DataTable)Session["dt"]).DefaultView;        
        this.gv.DataSource = view;
        this.gv.DataBind();
    }