ASP.NET Repeater_第四篇_分页02-04

+++ 前台代码

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" >

    <HeaderTemplate>

        <table width="500">

        <tr>

        <td>员工号</td>

        <td>员工姓名</td>

        </tr>

    </HeaderTemplate>

    <ItemTemplate>

        <tr>

        <td><a href='repeater05test.aspx?id=<%# Eval("EMPNO")%>'><%# Eval("ENAME") %></a><%# Eval("HIREDATE") %></td>

        </tr>        

    </ItemTemplate>

    <SeparatorTemplate>

        <tr>

        <td colspan="2"><hr style="border-top:1pt;"/></td>

        </tr>

    </SeparatorTemplate>

    <FooterTemplate>

        <tr>

        <td colspan="2" style="font-size:12pt"><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>

+++ 后台代码

private PagedDataSource pds()

{

    OracleConnection conn = new OracleConnection("Data Source=ora9; User ID=scott; Password=tiger; Unicode=True");

    DataSet ds = new DataSet();

    OracleDataAdapter daEMP = new OracleDataAdapter("SELECT * FROM EMP",conn);

    daEMP.Fill(ds, "EMP");

    PagedDataSource pds = new PagedDataSource();

    pds.DataSource = ds.Tables["EMP"].DefaultView;

    pds.AllowPaging = true;

    pds.PageSize = 4;

    pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);

    return pds;

}

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

        Repeater1.DataSource = pds();

        Repeater1.DataBind();

    }

}

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);

        int i = Convert.ToInt32(pds().CurrentPageIndex);

        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";

        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("repeater05.aspx?page=" + pg);

}

+++ 说明

(1) 将分页按钮放在了Repeater FooterTemplate,所以要实现分页功能,就需要 Repeater ItemDataBound 事件,该事件在数据绑定后,并在数据显示前出发;

(2) 必须用视图DataTable.DefaultView PagedDataSource.DataSource 赋值; 

(3) 传递页码的方式是采用通过超链接向当前页面传参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值