Repeater分页

页面源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="repeater.aspx.cs" Inherits="repeater" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
        <HeaderTemplate>
        <table width="500">
        <tr style="background-color:#ccffcc;">
        <td>作者</td>
        <td>书籍</td>
        </tr>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
            <td><a href="repeater.aspx?id=<%#Eval("id") %>"><%#Eval("username") %></a></td>
            <td>
                <asp:Repeater ID="Repeater2" runat="server" DataSource='<%#Eval("myrela") %>'>
                <ItemTemplate>
                <%#Eval("[/"score/"]") %>
                </ItemTemplate>
                </asp:Repeater>
            </td>
        </tr>
        </ItemTemplate>
        <AlternatingItemTemplate>
       
        </AlternatingItemTemplate>
        <SeparatorTemplate>
        <tr>
            <td colspan="2">
                <hr style="border-top:1pt;" />
            </td>
        </tr>
        </SeparatorTemplate>
        <FooterTemplate>
        <tr>
            <td colspan="2" style="font-size:12pt;color:#0099ff; background-color:#e6feda;">
        共<asp:Label ID="lblpc" runat="server" Text="Label"></asp:Label>页
        当前为第<asp:Label ID="lblp" runat="server" Text="Label"></asp:Label>页
        <asp:HyperLink ID="hlfir" runat="server" Text="首页"></asp:HyperLink>
        <asp:HyperLink ID="hlp" runat="server" Text="上一页"></asp:HyperLink>
        <asp:HyperLink ID="hln" runat="server" Text="下一页"></asp:HyperLink>
        <asp:HyperLink ID="hlla" runat="server" Text="尾页"></asp:HyperLink>
         跳至第
         <asp:DropDownList ID="ddlp" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlp_SelectedIndexChanged" >
         </asp:DropDownList>页
        </td>

        </tr>
        </table>
        </FooterTemplate>
        </asp:Repeater>
   
    </div>
    </form>
</body>
</html>
------------------------------------------------------------------------------------------------------------------------

.cs代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class repeater : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Repeater1.DataSource = pds();
            Repeater1.DataBind();
        }
    }

    private PagedDataSource pds()
    {
        string connstring = ConfigurationManager.ConnectionStrings["connsky"].ConnectionString;
        SqlConnection con = new SqlConnection(connstring);
      
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter("select * from [user]", con);
            sda.Fill(ds,"user1");
        SqlDataAdapter sda2 = new SqlDataAdapter("select * from record",con);
        sda2.Fill(ds,"score1");

        ds.Relations.Add("myrela",ds.Tables["user1"].Columns["id"],ds.Tables["score1"].Columns["u_id"]);

        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = ds.Tables["user1"].DefaultView;
        pds.AllowPaging = true;
        pds.PageSize = 5;
        pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);
        return pds;
    }


    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Footer)
        {//如果是脚模板
            //取到分页控件的对象
            DropDownList ddlp = (DropDownList)e.Item.FindControl("ddlp");

            HyperLink lpfirst = (HyperLink)e.Item.FindControl("hlfir");
            HyperLink lpprev = (HyperLink)e.Item.FindControl("hlp");       
            HyperLink lpnext = (HyperLink)e.Item.FindControl("hln");
            HyperLink lplast = (HyperLink)e.Item.FindControl("hlla");

            //将下拉框的当前索引赋值给分页对象的当前页
            pds().CurrentPageIndex = ddlp.SelectedIndex;

            int n = Convert.ToInt32(pds().PageCount);//n为分页数
            int i = Convert.ToInt32(pds().CurrentPageIndex);//i为当前页

            Label lblpc = (Label)e.Item.FindControl("lblpc");
            lblpc.Text = n.ToString();
            Label lblp = (Label)e.Item.FindControl("lblp");
            lblp.Text = Convert.ToString(pds().CurrentPageIndex+1);

            if (!IsPostBack)
            {
                for (int j = 0; j < n; j++)
                {
                    ddlp.Items.Add(Convert.ToString(j+1));  //填充下拉框
                }
            }
            if (i <= 0)
            {//如果当前页未首页
                lpfirst.Enabled = false;
                lpprev.Enabled = false;
                lplast.Enabled = true;
                lpnext.Enabled = true;
            }
            else
            {
                lpprev.NavigateUrl = "?page=" + (i - 1);
            }

            if (i >= n - 1)
            {//如果当前页为末页
                lpfirst.Enabled = true;
                lplast.Enabled = false;
                lpnext.Enabled = false;
                lpprev.Enabled = true;
            }
            else
            {
                lpnext.NavigateUrl = "?page="+(i+1);
            }

            lpfirst.NavigateUrl = "?page=0";//向本页传递参数page

            lplast.NavigateUrl="?page="+(n-1);//导航到最后一页
          


            ddlp.SelectedIndex = Convert.ToInt32(pds().CurrentPageIndex);//导航后把当前页的页码赋值给下拉框
        }
    }
    protected void ddlp_SelectedIndexChanged(object sender, EventArgs e)
    {//脚模板中的下拉列表框更改时激发
        string pg = Convert.ToString((Convert.ToInt32(((DropDownList)sender).SelectedValue)-1));//获取列表框当前选中项

        Response.Redirect("repeater.aspx?page=" + pg);//页面转向
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值