1

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

<%
@ Import Namespace="System.Data" %>3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">4

5
<html xmlns="http://www.w3.org/1999/xhtml" >6
<head runat="server">7
<title>无标题页</title>8
</head>9
<body>10
<form id="form1" runat="server">11
<div>12
Repeater 实现分页、自行绑定数据(不用数据源)<br />13
对Repeater 进行镶嵌使用.<br />14
<br />15
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">16
<HeaderTemplate>17
<table>18
<tr>19
<td>20
作者21
</td>22
<td>23
书籍24
</td>25
</tr>26
</HeaderTemplate>27
<ItemTemplate>28
<tr>29
<td>30

<a href="repeart1.aspx"><%
# Eval("au_lname") %></a>31
</td>32
<td>33

<%
--这里是第二个Repeater,放在第一个Repeater的 ItemTemplate 中。--%>34
<asp:Repeater ID="Repeater2" runat="server" datasource='<%# Eval("myrela") %>'>35
<ItemTemplate>36

<%
-- 注意这里的写法 --%>37

<%
# Eval("[\"title_id\"]")%><br>38
</ItemTemplate>39
</asp:Repeater>40
</td>41
</tr>42
</ItemTemplate>43
<SeparatorTemplate>44
<tr>45
<td colspan="2">46
<hr size="1pt" />47
</td>48
</tr>49
</SeparatorTemplate>50
<FooterTemplate>51
<tr>52
<td colspan="2">53
共 <asp:Label ID="lblpTotal" runat="server" Text="Label"></asp:Label> 页 当前为第 <asp:Label ID="lblpCurrent" runat="server" Text="Label"></asp:Label> 页 54
<asp:HyperLink ID="hlfirst" runat="server" Text="首页"></asp:HyperLink> 55
<asp:HyperLink ID="hlup" runat="server" Text="上一页"></asp:HyperLink>56
<asp:HyperLink ID="hlnext" runat="server" Text="下一页"></asp:HyperLink>57
<asp:HyperLink ID="hllast" runat="server" Text="末页"></asp:HyperLink>58
</td>59
</tr>60
</table>61
</FooterTemplate>62
</asp:Repeater>63
64
</div>65
</form>66
</body>67
</html>68

========================================================
后台
1
using System;2
using System.Data;3
using System.Configuration;4
using System.Collections;5
using System.Web;6
using System.Web.Security;7
using System.Web.UI;8
using System.Web.UI.WebControls;9
using System.Web.UI.WebControls.WebParts;10
using System.Web.UI.HtmlControls;11
using System.Data.SqlClient;12

13
public partial class repeart_repeart2 : System.Web.UI.Page14
{15
protected void Page_Load(object sender, EventArgs e)16
{17
if (!Page.IsPostBack)18
{19
this.Repeater1.DataSource = pds();20
this.Repeater1.DataBind();21
}22
}23

24
public PagedDataSource pds()25
{26
//string connstring = ConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;27
////声明一个字符串,后面随时可以用28
//SqlConnection con = new SqlConnection(connstring);29
////初始化连接30
//SqlDataAdapter sda = new SqlDataAdapter("select * from authors", con);31
////初始化一个SqlDataAdapter,并给出查询语句32
//DataSet ds = new DataSet();33
////初始化一个DataSet34
//sda.Fill(ds, "name");35
////将上面查询到的数据填充到name表中36
//SqlDataAdapter sda2 = new SqlDataAdapter("select * from titleauthor", con);37
////同上38
//sda2.Fill(ds, "title");39
////同上40
//ds.Relations.Add("myrela", ds.Tables["name"].Columns["au_id"], ds.Tables["title"].Columns["au_id"]);41
////为上面建立的两个表创建一个关系,指明父列和子列的名称并为他们的关系命名,前面将会用到42

43

44
string connstring=ConfigurationManager.ConnectionStrings["pubs"].ConnectionString;45
SqlConnection con = new SqlConnection(connstring);46

47
SqlDataAdapter sda = new SqlDataAdapter("select * from authors",con);48
DataSet ds = new DataSet();49
sda.Fill(ds,"name");50

51
SqlDataAdapter sda2 = new SqlDataAdapter("select * from titleauthor",con);52
sda2.Fill(ds,"title");53

54
ds.Relations.Add("myrela",ds.Tables["name"].Columns["au_id"],ds.Tables["title"].Columns["au_id"]);55

56
//PagedDataSource pds = new PagedDataSource();57
////初始化一个PagedDataSource,允许控件分页58
//pds.DataSource = ds.Tables["name"].DefaultView;59
////将上面的ds转换成标准数据视图60
//pds.AllowPaging = true;61
////允许分页62
//pds.PageSize = 5;63
////每页大小为5 64
//pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);65
////设置当前页66
//return pds;67
////将处理完毕的pds对象发出去68

69
PagedDataSource pds = new PagedDataSource();70
pds.DataSource = ds.Tables["name"].DefaultView;71
pds.AllowPaging = true;72
pds.PageSize = 5;73
pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);74
return pds;75
}76
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)77
{78
if(e.Item.ItemType==ListItemType.Footer)79
{80
//int n = pds().PageCount;//将分页总数赋给变量n81
//int i = pds().CurrentPageIndex;//将当前分页码赋给i82

83
//Label lblpc = (Label)e.Item.FindControl("lblpc");84
//lblpc.Text = n.ToString();85
////找到lblpc这个Label,将总页码赋给他86
//Label lblp = (Label)e.Item.FindControl("lblp");87
//lblp.Text = Convert.ToString(pds().CurrentPageIndex + 1);88
////找到lblp这个Label,将当前页码赋给他,但是注意,因为页码从0开始,这里要直观的话就得加189
//HyperLink hlfir = (HyperLink)e.Item.FindControl("hlfir");90
//hlfir.NavigateUrl = "?page=0";91
//HyperLink hlla = (HyperLink)e.Item.FindControl("hlla");92
//hlla.NavigateUrl = "?page=" + Convert.ToInt32(n - 1);93
////找到表示最前页和末页的Label,为他们的NavigateUrl属性赋为第0页和最大页码减194
//HyperLink hlp = (HyperLink)e.Item.FindControl("hlp");95
//HyperLink hln = (HyperLink)e.Item.FindControl("hln");96

97
//ssssssssssssssssssss98
int n = pds().PageCount; //分页总数99
int i = pds().CurrentPageIndex;//当前页码100
//下两行是总页数101
Label lblpTotal = (Label)e.Item.FindControl("lblpTotal");102
lblpTotal.Text = n.ToString();103
//下两行是当前页码104
Label lblpCurrent = (Label)e.Item.FindControl("lblpCurrent");105
lblpCurrent.Text = Convert.ToString(pds().CurrentPageIndex + 1);//页码从0开始106

107
//首页,尾页108
HyperLink hlfirst = (HyperLink)e.Item.FindControl("hlfirst");109
hlfirst.NavigateUrl = "?page=0";110
HyperLink hllast = (HyperLink)e.Item.FindControl("hllast");111
hllast.NavigateUrl = "?page=" + Convert.ToInt32(n-1);112

113
//注意,这里先申明一下.114
HyperLink hlup = (HyperLink)e.Item.FindControl("hlup");115
HyperLink hlnext = (HyperLink)e.Item.FindControl("hlnext");116

117
//找到表示上页和下页这两个控件118
if (i <= 0)119
{//如果当前页已经是第0页120
hlup.Enabled = false;121
hlfirst.Enabled = false;122
hlnext.Enabled = true;123
}124
else125
{126
hlup.NavigateUrl = "?page=" + Convert.ToInt32(i - 1);127
}128
if (i > n - 2)129
{//如果当前项已经是最末页130
hlnext.Enabled = false;131
hllast.Enabled = false;132
hlup.Enabled = true;133
}134
else135
{136
hlnext.NavigateUrl = "?page=" + Convert.ToInt32(i + 1);137
}138

139
140
}141
}142
}143
