repeater无刷新分页显示(续)

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

<%--这里用了个投机取巧的办法,不太好,不太好--%>
<a id="pre" href='javascript:prePage();' class="next" style="display:none">上一页</a>
                <asp:Label ID="lblCurPage1" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage2" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage3" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage4" class="index" runat="server" Text="""></asp:Label>
                <asp:Label ID="lblCurPage5" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage6" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage7" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage8" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage9" class="index" runat="server" Text=""></asp:Label>
                <asp:Label ID="lblCurPage10" class="index" runat="server" Text=""></asp:Label>
                <a id="next" href='javascript:nextPage();' class="next">下一页</a> <span class="total">
                    共<asp:Label ID="lblTotlePage" runat="server" Text=""></asp:Label>页&nbsp;&nbsp;&nbsp;&nbsp;到第<input
                        id="txtPage" name="" runat="server" type="text" class="txt" onkeyup="this.value=this.value.replace(/\D/g,'')" onblur="checkTxt()" />页面</span><input
                            name="" type="button" value="跳转" class="btn" onclick="jumpPage();" />

*****************************************************************************************
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

posted @ 2011-12-02 17:32  捂汗  阅读(687)  评论(0编辑  收藏  举报