后来研究了研究这个,做了些完善。

<%--这里用了个投机取巧的办法,不太好,不太好--%>
<a />

*****************************************************************************************
public partial class Dingdan_areas : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler//别忘了继承这个接口
{
    DataTable dt = new DataTable();
    dt = dingdansussServices.GetDDanList(sdname);
            BindList(1, true,dt);
            string callbackReference = ClientScript.GetCallbackEventReference(this, "arg", "ReceiveCallback", "content", false);
            string callbackScript = string.Format("function CallServer(arg,content){{ {0} }}", callbackReference);
            ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
}
    #region 分页
    static int PAGESIZE = 15;
    private int currentPageIndex;
    public int pageIndex = 1;
    protected void BindList(int pageIndex, bool needRender)
    {
        int pages = (dt.Rows.Count % PAGESIZE == 0) ? dt.Rows.Count / PAGESIZE : (dt.Rows.Count / PAGESIZE) + 1;
        lblTotlePage.Text = pages.ToString();
        if (needRender)
        {
            RenderPager(pages);
        }
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        pds.AllowPaging = true;
        pds.PageSize = 15;
        if (pageIndex == 0)
        {
            pageIndex = 1;
        }
        //设置分页对象的当前索引
        pds.CurrentPageIndex = pageIndex - 1;
        Repeater1.DataSource = pds;
        Repeater1.DataBind();
    }
   //通过这个重载,只需要调用这个方法,把datatable 传进来就行了,别的都不用管就可以实现分页了
    protected void BindList(int pageIndex, bool needRender, DataTable dt)
    {
        if (dt == null) return;
        int pages = (dt.Rows.Count % PAGESIZE == 0) ? dt.Rows.Count / PAGESIZE : (dt.Rows.Count / PAGESIZE) + 1;
        lblTotlePage.Text = pages.ToString();
        txtPage.Value = "1";
        if (needRender)
        {
            RenderPager(pages);
        }
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = dt.DefaultView;
        pds.AllowPaging = true;
        pds.PageSize = 15;
        if (pageIndex == 0)
        {
            pageIndex = 1;
        }
        //设置分页对象的当前索引
        pds.CurrentPageIndex = pageIndex - 1;
        Repeater1.DataSource = pds;
        Repeater1.DataBind();
    }

    protected void RenderPager(int pages)
    {
        StringBuilder sb = new StringBuilder();
        do
        {
            if (pageIndex < 11)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage1.Text += sb.ToString();
            }
            else if (pageIndex < 21)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage2.Text += sb.ToString();
            }
            else if (pageIndex < 31)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage3.Text += sb.ToString();
            }
            else if (pageIndex < 41)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage4.Text += sb.ToString();
            }
            else if (pageIndex < 51)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage5.Text += sb.ToString();
            }
            else if (pageIndex < 61)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage6.Text += sb.ToString();
            }
            else if (pageIndex < 71)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage7.Text += sb.ToString();
            }
            else if (pageIndex < 81)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage8.Text += sb.ToString();
            }
            else if (pageIndex < 91)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage9.Text += sb.ToString();
            }
            else if (pageIndex < 101)
            {
                sb.Remove(0, sb.Length);
                sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>", pageIndex);
                lblCurPage10.Text += sb.ToString();
            }
        } while (pageIndex++ < pages);
        //lblCurPage.Text = sb.ToString();
    }

    public void RaiseCallbackEvent(string eventArgument)
    {
        currentPageIndex = Convert.ToInt32(eventArgument);
        BindList(currentPageIndex, false);
    }

    public string GetCallbackResult()
    {
        //返回再次绑定后的Repeater的表现内容
        return RenderControl(Repeater1);
    }

    private string RenderControl(Control control)
    {
        StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
        HtmlTextWriter writer2 = new HtmlTextWriter(writer1);

        control.RenderControl(writer2);
        writer2.Flush();
        writer2.Close();
        return writer1.ToString();
    }
    #endregion

相关文章: