+++ 前台代码
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate >
<table>
<tr>
<td >自定义头模板</td>
</tr>
</HeaderTemplate>
<ItemTemplate >
<tr>
<td>序号:<%# Eval("EMPNO") %></td>
<td>编码:<%# Eval("ENAME") %></td>
</tr>
</ItemTemplate>
<FooterTemplate >
<tr>
<td>自定义脚模板</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
当前页:<asp:Label ID="num" runat="server"></asp:Label>
<br />
<asp:Button ID="BtnUp" runat="server" οnclick="BtnUp_Click" Text="上一页" />
<asp:Button ID="BtnDown" runat="server" οnclick="BtnDown_Click" Text="下一页" />
+++ 后台代码
public void Bind()
{
string connStr = "Data Source=ora9; User ID=scott; Password=tiger; Unicode=True";
OracleConnection conn = new OracleConnection(connStr);
OracleDataAdapter da = new OracleDataAdapter("SELECT * FROM EMP", conn);
DataSet ds = new DataSet();
da.Fill(ds, "EMP");
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ds.Tables["EMP"].DefaultView;
pds.AllowPaging = true;
pds.PageSize = 2;
int curpage = Convert.ToInt32(num.Text);
this.BtnDown.Enabled = true;
this.BtnUp.Enabled = true;
pds.CurrentPageIndex = curpage - 1;
if (curpage == 1)
{
this.BtnUp.Enabled = false;
}
if (curpage == pds.PageCount)
{
this.BtnDown.Enabled = false;
}
this.Repeater1.DataSource = pds;
this.Repeater1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
num.Text = "1";
Bind();
}
}
protected void BtnUp_Click(object sender, EventArgs e)
{
this.num.Text = Convert.ToString(Convert.ToInt32(num.Text) - 1);
Bind();
}
protected void BtnDown_Click(object sender, EventArgs e)
{
this.num.Text = Convert.ToString(Convert.ToInt32(num.Text) + 1);
Bind();
}
+++ 说明
(1) 虽然Repeater控件本身没有分页功能,但与其他类似的控件相比,更加灵活,所以本人比较喜欢这个控件;
(2) 本例是一个最简单的分页例子,单击两个按钮,查看上一条或下一条的记录;
(3) 本例使用 Repeater 控件,利用 PagedDataSource 类实现分页功能。一些本身具有分页功能的控件,如GridView,也都是使用了PagedDataSource类;
(4) 本例利用 TextBox 控件的 Text 属性来设置页码。