2004-4-8+ Repeater控件小结

repeater控件的主要作用是循环显示数据库里面的东东,它招人喜欢的地方就是“语法”简单,但是却可以显示复杂结构的表格,这里的这个“复杂结构”的意思就是有很多行和列的那种,举个例子-“留言板”。
repeater控件是和datagrid一样,是一个“容器控件”。填加数据的方式也是通过“数据绑定”,就是和datagrid一样用DataSource指定数据源,然后通过模板来循环显示绑定的数据。所谓模板,就是预先定义的数据显示方式。听起来不好理解,其实很简单。(好象所有的web控件都很简单,microsoft真不愧是windows这种傻瓜系统的发明者。)下面用具体的实例说明。
<%@ import namespace="System.Data"%>
<%@ import namespace="System.Data.OleDb"%>
<script language="c#" runat="server">
private void Page_Load(object sender,System.EventArgs e){
string connstr=ConfigurationSettings.AppSettings["color"];
OleDbConnection conn=new OleDbConnection(connstr);
string sql="select * from guestbook";
conn.Open();
OleDbCommand cmd=new OleDbCommand(sql,conn);
rep1.DataSource=cmd.ExecuteReader();//这里绑定啦
rep1.DataBind();

conn.Close();
}
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>repeater实验</title>
<style>
td { font-size: 12px; line-height: 20px; color:#6E0808;font-family:"宋体";}
</style>
</head>
<body>
<form runat="server">


<asp:repeater id="rep1" runat="server">
<headertemplate>
<table width="200" border="0" cellpadding="0" cellspacing="0">
</headertemplate>
<itemtemplate>
<tr>
<td width="80" height="20" valign="top" bgcolor="#00CCFF"><%# DataBinder.Eval(Container,"DataItem.dname")%></td>
<td width="120" valign="top" bgcolor="#CC6633"><a href="<%# DataBinder.Eval(Container,"DataItem.homepage")%>" target="_blank"><%# DataBinder.Eval(Container,"DataItem.ddate")%></a></td>
</tr>
<tr>
<td height="20" colspan="2" valign="top" bgcolor="#CCFFCC"><%# DataBinder.Eval(Container,"DataItem.dbody")%>
</td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>


</form>
</body>
</html>
大家可以看这段代码的不同颜色部分,<script>里有一段是数据绑定的,大家都很熟悉了吧,也没什么好说的。重点是<asp:repeater>的三个用的最多的模板headertemplate、itemtemplate和footertemplate。如果大家把这三个模板的标签去掉的话,就可以发现这个其实就是一个完整的html表格的代码(后面再说这段代码的写法)。其中headertemplate是用来输出表格头,而footertemplate则输出表格尾。中间的一系列<td><tr>就由itemtemplate来负责输出,其实itemtemplate是这段代码里唯一的一个用来循环输出的摸板。大家在aspx页中查看一下源文件就会发现itemtemplate中的这段html代码完全没有改动。
<%# DataBinder.Eval(Container,"DataItem.dname")%>这段主要是显示指定的数据表中的值,在这里是显示dname这个列的值。
说到这里大家应该对repeater有一个大概的了解了吧,它就相当于以前asp中的循环显示一样。只不过现在这里更加方便了。而用来循环显示的那些表格的html代码也并不一定就是要自己去写。我的做法就是先把想要的表格用dreamweaver画好,然后在把源文件一点一点的复制过来。这样就算没有厉害的html知识也可以做出不错的页面啦。
最后加一段代码,是在浏览器中查看源文件后得到的,大家可以对照一下<itemtemplate>中的那一段。
<tr>
<td width="80" height="20" valign="top" bgcolor="#00CCFF">笨黑</td>
<td width="120" valign="top" bgcolor="#CC6633"><a href="http://api.533.net" target="_blank">2003-8-10 17:53:24</a></td>
</tr>
<tr>
<td height="20" colspan="2" valign="top" bgcolor="#CCFFCC">这个留言本你是放在什么地方的???
不错!
</td>
</tr>
<tr>
<td width="80" height="20" valign="top" bgcolor="#00CCFF">zsjay</td>
<td width="120" valign="top" bgcolor="#CC6633"><a href="http://color.533.net" target="_blank">2003-8-10 21:35:13</a></td>
</tr>
<tr>
<td height="20" colspan="2" valign="top" bgcolor="#CCFFCC">加油加油在加油! 我是支持你的内容是少了一点
</td>
</tr>

repeater控件还有两个模板alternatingitemtemplate和separatortemplate,其中前一个是和itemtemplate搭配来显示不一样的内容,而separatortemplate则是夹在每个循环的中间显示,总之就是作用不大。为了这篇文章的易看性,这两个就不具体说了,大家查阅一下相关资料就可以明白。

posted on 2006-06-26 13:37  Notus|南色的风  阅读(354)  评论(1编辑  收藏  举报