Repeater控件本身没有分页功能,通过使用PagedDataSource类,它位于using System.Web.UI.WebControls;命名空间下,使Repeater控件可以使用分页功能,简单方便,嘿嘿。。
.aspx页代码:
<%@ Page Language="C#" Debug="true" AutoEventWireup="true" CodeFile="RepeaterFenye.aspx.cs" Inherits="RepeaterFenye" %>
<!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>Repeater分页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table>
<thead>
<tr>
<th width="100px">
用户账号
</th>
<th width="100px">
用户密码
</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="center">
<%# Eval("username") %>
</td>
<td align="center">
<%# Eval("password") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody></table>
</FooterTemplate>
</asp:Repeater>
<asp:Button ID="btn_First" runat="server" Text="首页" οnclick="btn_First_Click" />
<asp:Button ID="btn_Pre" runat="server" Text="<<" οnclick="btn_Pre_Click" />
<asp:Button ID="btn_Next" runat="server" Text=">>" οnclick="btn_Next_Click" />
<asp:Button ID="btn_Last" runat="server" Text="尾页" οnclick="btn_Last_Click" />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>/<asp:Label ID="Label2"
runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
.aspx.cs页代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class RepeaterFenye : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label1.Text = "1"; //第一次加载的时候
DataBindToRepeater();
}
}
string str = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
private void DataBindToRepeater()
{
//获得显示页
int DisplayPage = Convert.ToInt32(Label1.Text);
DataSet ds = new DataSet();
ds = GetDataSet();
//Repeater控件本身没有分页功能,通过使用PagedDataSource类,它位于using System.Web.UI.WebControls;命名空间下,使Repeater控件可以使用分页功能
PagedDataSource ps = new PagedDataSource();
ps.DataSource = ds.Tables[0].DefaultView;
//允许使用分页功能
ps.AllowPaging = true;
//设置每页显示的数据数,在这里我设置每页可以显示5条数据
ps.PageSize = 5;
//CurrentPageIndex是当前页,而DisplayPage是显示页,因为当前页是从0开始的,所以要记得减1
ps.CurrentPageIndex = DisplayPage - 1;
//首先设置上一页、下一页按钮都能使用,下面接着判断在什么情况下不能使用
this.btn_Pre.Enabled = true;
this.btn_Next.Enabled = true;
//当为第一页的时候,上一页按钮不能用
if (DisplayPage == 1)
{
this.btn_Pre.Enabled = false;
}
//当为最后一页的时候,下一页按钮不能用
if (DisplayPage == ps.PageCount)
{
this.btn_Next.Enabled = false;
}
//总页数
Label2.Text = Convert.ToString(ps.PageCount);
Repeater1.DataSourceID = null;
Repeater1.DataSource = ps;
Repeater1.DataBind();
}
//读取数据并且返回一个DataSet值
public DataSet GetDataSet()
{
DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection(str))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from T_Main";
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
}
return ds;
}
//首页
protected void btn_First_Click(object sender, EventArgs e)
{
Label1.Text = "1";
btn_Pre.Enabled = false;
DataBindToRepeater();
}
//上一页
protected void btn_Pre_Click(object sender, EventArgs e)
{
Label1.Text = Convert.ToString((Convert.ToInt32(Label1.Text) - 1));
DataBindToRepeater();
}
//下一页
protected void btn_Next_Click(object sender, EventArgs e)
{
Label1.Text = Convert.ToString((Convert.ToInt32(Label1.Text) + 1));
DataBindToRepeater();
}
//最后一页
protected void btn_Last_Click(object sender, EventArgs e)
{
//当前页就等于总共页
Label1.Text = Label2.Text;
btn_Next.Enabled = false;
DataBindToRepeater();
}
}