repeater下的刷新分页(带有1,2,3...)

//Js 去掉超链接下划线

<style type="text/css">
<!--
A:link{text-decoration:none}
A:visited{text-decoration:none}
A:hover {color: #ff00ff;text-decoration:underline}
 -->
</style>
           

 

/***********************************repeater下的分页(带有,2,3...)*********************************/

///写在<FooterTemplate>里的代码

 

 <FooterTemplate>
                <tr>
                    <td colspan="6">
                        <br />
                        共<asp:Label ID="lblPageCount" runat="server" Text=""></asp:Label>页,当前第<asp:Label
                            ID="lblCurrentPage" runat="server" Text=""></asp:Label>页,
                            每页<asp:Label   ID="Ts" runat="server" Text=""></asp:Label>条,
                            共<asp:Label   ID="zg" runat="server" Text=""></asp:Label>条记录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <asp:HyperLink ID="hlFirst" runat="server" Text="首页"></asp:HyperLink>
                        <asp:HyperLink ID="hlPrev" runat="server" Text="上一页"></asp:HyperLink>
                        <asp:PlaceHolder ID="numeric" runat="server"></asp:PlaceHolder>
                        <asp:HyperLink ID="hlNext" runat="server" Text="下一页"></asp:HyperLink>
                        <asp:HyperLink ID="hlLast" runat="server" Text="尾页"></asp:HyperLink>
                        <asp:DropDownList ID="ddlJumpPage" runat="server">
                        </asp:DropDownList>
                        <asp:ImageButton ID="ibtnGo" runat="server" Width="30px" Height="20px" ImageAlign="Bottom"
                            ImageUrl="~/images/go.jpg" OnClick="ibtnGo_Click" />
                    </td>
                </tr>
                </table>
            </FooterTemplate>

///

/*****************************************写在cs里的代码***************************************/

 

 

 

 

 

       /************注意不要忘记在页面代码里加上

<asp:Repeater ID="rpTest" runat="server" OnItemDataBound="rpTest_ItemDataBound" OnItemCreated="rpTest_ItemCreated">

带红色的代码 *****************************************/

 

//下面是给Repeater绑定数据

protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            rpTest.DataSource = GetPds();
            rpTest.DataBind();
            DropDownList ddlJumpPage = (DropDownList)rpTest.Controls[this.rpTest.Controls.Count - 1].FindControl("ddlJumpPage");   /*************************************************   这里为什么要         减1                *********************/
            ddlJumpPage.SelectedIndex = GetPds().CurrentPageIndex;
        }
    }

 


    /// <summary>
    /// 返回待绑定的数据源
    /// </summary>
    /// <returns></returns>
    private PagedDataSource GetPds()
    {
        StudentManager stu = new StudentManager();  //这两句代码是用来调用数据加载方法(GetStudent()它实现的是Select
)的,要因地制宜;
        DataSet ds = stu.GetStudent();
        PagedDataSource pds = new PagedDataSource();

 

        //设置数据源
        pds.DataSource = ds.Tables[0].DefaultView;
        pds.AllowPaging = true; //允许分页
        pds.PageSize = 5; //一页显示5条数据
        if(Request.QueryString["page"] != null) //判断页面传值是否为空
        {
            pds.CurrentPageIndex = Int32.Parse(Request.QueryString["page"].ToString()) - 1;  //??????这个地方为什么要减1(我猜是去掉最后的那个空字符)
        }
        else
        {
            pds.CurrentPageIndex = 0;
        }
        return pds;
    }

    /// <summary>
    /// 显示底部分页按钮并向下拉控件中填充数据
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void rpTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if(GetPds().DataSourceCount != 0)
        {
            if(e.Item.ItemType == ListItemType.Footer)  //判断是否为页脚
            {
                Label lblRecordCount = (Label)e.Item.FindControl("lblRecordCount"); //
                Label lblPageCount = (Label)e.Item.FindControl("lblPageCount");  //总页数
                Label lblCurrentPage = (Label)e.Item.FindControl("lblCurrentPage"); //总记录数
                Label Ts = (Label)e.Item.FindControl("Ts"); //每页多少条记录数
                Label zg = (Label)e.Item.FindControl("zg");
                HyperLink hlFirst = (HyperLink)e.Item.FindControl("hlFirst"); //首页
                HyperLink hlPrev = (HyperLink)e.Item.FindControl("hlPrev"); // 上一页
                HyperLink hlNext = (HyperLink)e.Item.FindControl("hlNext"); // 下一页
                HyperLink hlLast = (HyperLink)e.Item.FindControl("hlLast"); // 尾页


                DropDownList ddlJumpPage = (DropDownList)e.Item.FindControl("ddlJumpPage");

                int pagesize = GetPds().PageSize; // 每页的记录数
                int counts = GetPds().DataSourceCount; //总记录数
                int pageCount = GetPds().PageCount; //总页数
                int curPrage = GetPds().CurrentPageIndex + 1; //当前页 ???为什么要加1 (因为索引下标是0 的原因吗)

                for (int i = 1; i <= pageCount;i++ )
                {
                    ddlJumpPage.Items.Add(i.ToString());
                }
                if (pageCount == 1) //当总页数只有一页,则底部分页链接不可用
                {
                    hlFirst.Enabled = false;
                    hlPrev.Enabled = false;
                    hlNext.Enabled = false;
                    hlLast.Enabled = false;
                }
                else
                {
                    if (curPrage <= 1) //若当前为首页,则首页和上一页的链接不可用
                    {
                        hlFirst.Enabled = false;
                        hlPrev.Enabled = false;

                        hlNext.Enabled = true;
                        hlLast.Enabled = true;
                    }
                    else
                    {
                        hlPrev.NavigateUrl = "?page=" +(curPrage - 1);
                    }
                    if (curPrage >= pageCount) //若当前页为最后一页,则下一页和尾页的链接不可用
                    {
                        hlFirst.Enabled = true;
                        hlPrev.Enabled = true;
                        hlNext.Enabled = false;
                        hlLast.Enabled = false;
                    }
                    else
                    {
                        hlNext.NavigateUrl = "?page=" + (curPrage + 1);
                    }
                    hlFirst.NavigateUrl = "?page=1";
                    hlLast.NavigateUrl = "?page=" + pageCount;
                }
                lblPageCount.Text = pageCount.ToString();
                lblCurrentPage.Text = curPrage.ToString();
                Ts.Text = pagesize.ToString();
                zg.Text = counts.ToString();

            }
        }
        else // 若数据源中无信息,则显示相关提示
        {
            rpTest.Visible = false;
            lblMessage.Text = "无相关记录";
        }
    }
    /// <summary>
    /// go!按钮事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ibtnGo_Click(object sender, EventArgs e)
    {
        DropDownList ddlJumpPage = (DropDownList)rpTest.Controls[this.rpTest.Controls.Count - 1].FindControl("ddlJumpPage");
        Response.Redirect("Default.aspx?page=" + ddlJumpPage.SelectedValue);
    }
    /// <summary>
    /// 显示页码导航
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void rpTest_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        if(GetPds().DataSourceCount != 0)
        {
            if(e.Item.ItemType == ListItemType.Footer)
            {
                PlaceHolder ph = (PlaceHolder)e.Item.FindControl("numeric");
                int pageCount = GetPds().PageCount;
                int curPage = GetPds().CurrentPageIndex + 1;
                int startIndext = (curPage - 1) / 5 * 5 + 1; //根据当前页得到第一个页码
                int endIndex = startIndext + 9; //显示10个页码  这句代码是设置你页面上显示多少个数字
                if (endIndex > pageCount) //判断是否为最后一页
                {
                    endIndex = pageCount;
                }

 

//这个for是Vs08下的,在VS05下要报错,可改为蓝色代码

                for (int i = startIndext; i <= endIndex; i++) //通过循环动态显示页码
                {
                    var hl = new HyperLink { ID = "hl" + i, Text = i.ToString(), NavigateUrl = "?page=" + i };
                    ph.Controls.Add(i != curPage ? (Control)hl : new LiteralControl(i.ToString()));
                    ph.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;"));
                }

for (int i = startIndext; i <= endIndex; i++) //通过循环动态显示页码
                {
                    HyperLink hl = new HyperLink();
                    //{ID = "hl" + i, hl.Text = i.ToString(), hl.NavigateUrl = "?page=" + i};
                    hl.ID = "hl" + i;
                    hl.Text = i.ToString();
                    hl.NavigateUrl = "?page=" + i;
                    ph.Controls.Add(i != curPage ? (Control)hl : new LiteralControl(i.ToString()));
                    ph.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;"));
                }


            }
        }
    }

/**************************************

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值