Repeat控件
DEMO
顾名思义,此控件主要用于显示“重复的内容”。其中需要重复显示的内容放在
<ItemTemplate></ItemTemplate>
以下是一个简单的例子:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Repeater.aspx.cs" Inherits="RepearANDPaging.Repeater" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style>
.stuInfo {float: left;width: 240px;height: 110px; padding: 5px 5px 5px 10px; background-color: #629269; border: 1px solid #3b3e7c; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" DataMember="DefaultView" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<div class="stuInfo">
姓名:<%#Eval("StudentName") %><br />
性别:<%#Eval("Sex") %><br />
专业:<%#Eval("Major") %><br />
毕业院校: <%#Eval("SchoolBefore") %><br />
地址:<%#Eval("Address") %><br />
<%--Eval("数据库中的字段名") --%>
</div>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MySchoolConnectionString %>" SelectCommand="SELECT * FROM [Student]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
由于只是示例,数据是采用直接绑定数据源的方式实现的,通过后台代码绑定也是一样。
结果如下:
模板
Repeater中使用模板
Repeater支持以下5种模板
● ItemTemplate : 对每一个数据项进行格式设置 【Formats each item from the data source.】
● AlternatingItemTemplate : 对交替数据项进行格式设置
● SeparatorTemplate : 对分隔符进行格式设置
● HeaderTemplate : 对页眉进行格式设置
● FooterTemplate : 对页脚进行格式设置
再看一个例子:
<style>
html {background-color:Silver}
.content {width:600px;border:soild 1px black;background-color:White;}
.movies {border-collapse:collapse;}
.movies th,.movies td {padding:10px;border-bottom:1px solid black;}
.alternating {background-color:#eeeeee;}
</style>
<div class="content">
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate> <!-- 显示头部 -->
<table class="movies"> <!-- table头部声明-->
<tr>
<th>Movie Title</th>
<th>Movie Director</th>
<th>Box Office Totals</th>
</tr>
</HeaderTemplate>
<ItemTemplate> <!-- 数据行 -->
<tr>
<td><%#Eval("Title") %></td>
<td><%#Eval("Director") %></td>
<td><%#Eval("BoxOfficeTotals","{0:c}") %></td> <!-- 格式化为货币形式 -->
</tr>
</ItemTemplate>
<AlternatingItemTemplate> <!-- 交错行 -->
<tr class="alternating">
<td><%#Eval("Title") %></td>
<td><%#Eval("Director") %></td>
<td><%#Eval("BoxOfficeTotals","{0:c}") %></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate> <!-- 脚注行 -->
</table> <!-- table尾 -->
</FooterTemplate>
</asp:Repeater>
</div>
此例来自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html
AspNetPager 控件
- 首先搜索下载此控件 http://www.webdiyer.com/aspnetpager/demos/
- 添加引用 , 并在aspx页面加入
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
- 将此dll拖入VS的工具箱(可以省略 自己写代码也可,加入工具箱后可直接插入)
- 此控件的更多功能DEMO 请访问:http://www.webdiyer.com/aspnetpager/demos/
主要用于各种场合下的分页,用此控件的分页是真实的分页。相比GRIDVIEW的分页功能,GRIDVIEW是一次将数据拿出,显示的时候分页。而此控件的分页是每次从查询不同的数据出来。
还是直接拿例子看的明白些:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AspNetPager.aspx.cs" Inherits="RepearANDPaging.AspNetPager" %>
<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style>
body {width:100%;}
#content {overflow:hidden;}
.stuInfo {float: left;width: 240px; height: 110px; padding: 5px 5px 5px 10px; background-color: #629269; border: 1px solid #3b3e7c; }
#AspNetPager1 {margin:0 auto; width:120px; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div id ="content">
<asp:Repeater ID="Repeater1" runat="server" DataMember="DefaultView">
<ItemTemplate>
<div class="stuInfo">
姓名:<%#Eval("StudentName") %><br />
性别:<%#Eval("Sex") %><br />
专业:<%#Eval("Major") %><br />
毕业院校: <%#Eval("SchoolBefore") %><br />
地址:<%#Eval("Address") %><br />
<%--Eval("数据库中的字段名") --%>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="10" OnPageChanged="AspNetPager1_PageChanged"></webdiyer:AspNetPager>
</form>
</body>
</html>
.cs:
namespace RepearANDPager
{
public partial class AspNetPager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
AspNetPager1.RecordCount = Convert.ToInt16(SqlDBHelper.ExectueScalar("SELECT COUNT(*) FROM STUDENT"));
bindData();
}
}
void bindData()
{
// 当前页第一条索引和最后一条索引,例如size为10 第一个开始为1 结束10 第二页则是11和20
int i = AspNetPager1.StartRecordIndex;
int j = AspNetPager1.EndRecordIndex;
//从数据库中查找第i到j行的数据
string sql = "select * from (select row_number() over (order by studentid) as rowNum,* from student) as t where rowNum between " + i + " and " + j;
Repeater1.DataSource = SqlDBHelper.ExectueReader(sql);
Repeater1.DataBind();
}
//protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
//{
// //bindData();
//}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
bindData();
}
}
}
结果 :
此处只做了实现分页的简单示例,更多内容请参照官网DEMO
在数据库中查询 第几行 到第几行的数据
-- 查询10到20行的数据 行号由学生id升序排列产生
select * from
(select row_number() over (order by studentid) as rowNum,* from student) as t
where rowNum between 10 and 20
row_number()函数必须和over() 一起使用,这其实是一个开窗函数,有关开窗函数的知识有待进一步学习。SQL开窗函数