repeater控件介绍、 repeater嵌套repeater
repeater控件介绍、 repeater嵌套repeaterrepeater的介绍
DataGrid控件对数据输出格式是自动生成HtmlTable标记的,DataList控件也是这样,它根据数据内容来生成数据控制表格。而Repeater 控件是模板化的数据绑定列表,Repeater 控件是“无外观的”,Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式。即:它不具有任何内置布局或样式,也就不会产生任何数据控制表格来控制数据的显示。因此,我们必须在控件的模板中明确声明所有 HTML 布局标记、格式标记和样式标记。
Repeater 控件的几个模板项介绍
AlternatingItemTemplate
对交替数据项进行格式设置,与 ItemTemplate 元素类似,但在 Repeater 控件中隔行(交替项)呈现一次。通过设置 AlternatingItemTemplate 元素的样式属性,可以为其指定不同的外观。
FooterTemplate
该模板确定了控件页脚的呈现样式,在所有数据绑定行呈现之后呈现的元素。用于控制Repeater 控件底部的样式和布局。
注意 FooterTemplate 不能是数据绑定的。
HeaderTemplate
该模板确定了控件页眉的呈现样式,在所有数据绑定行呈现之前呈现一次的元素。用于控制Repeater 控件头部的样式和布局。
注意 HeaderTemplate 项不能是数据绑定的。
ItemTemplate
该模板确定了数据项的呈现样式,对每一个数据项进行格式设置,为数据源中的每一行都呈现一次的元素
SeparatorTemplate
该模板定义了数据项间隔的呈现样式
Repeater数据绑定的实现
<li class="content">
<asp:Repeater ID="RepNewsClass" OnItemDataBound="RepNewsClass_ItemDataBound"
runat="server" EnableViewState="false">
<ItemTemplate>
<li class="class">
<li class="classhead">
<li class="classtitle">
<%# Eval("ClassName")%>
</li>
<li class="more">
<a href="/news/catalog/<%# Eval("ClassID")%>。htm"><img src="/images/more。gif" border="0" /></a>
</li>
</li>
<li class="classbody">
<li class="picnews">
<asp:Literal ID="lt_PicNews" runat="server" EnableViewState="false"></asp:Literal>
</li>
<asp:Repeater ID="RepNews" runat="server" EnableViewState="false">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<a href="/news/<%# Eval("NewsID") %>。htm" title="<%# Eval("Title") %>" target="_blank"><%# GkSystem.Utility.MyString.SubString(Eval("Title").ToString(),40,"") %></a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</li>
<li class="clear"></li>
</ItemTemplate>
</asp:Repeater>
</li>
cs文件代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class News_Default : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
metakeywords.Content = GkSystem.BLL.SiteConfig.GetConfig().SiteKeyWords;
metadescription.Content = GkSystem.BLL.SiteConfig.GetConfig().SiteDescription;
this.RepBrand.DataSource = GkSystem.BLL.Brands.GetListWhereBrandIDInNews();
this.RepBrand.DataBind();
this.RepRecommend.DataSource = new GkSystem.BLL.News().GetList("IsRecommend=1 AND ISDELETE=0 AND ISAUTH=1");
this.RepRecommend.DataBind();
DataSet ds = GkSystem.BLL.NewsClass.GetListWhereClassIDInNews();
this.RepClass.DataSource = ds;
this.RepClass.DataBind();
this.RepNewsClass.DataSource = ds;
this.RepNewsClass.DataBind();
this.RepTop.DataSource = new GkSystem.BLL.News().GetTopNews("ISDELETE=0 AND ISAUTH=1",10);
this.RepTop.DataBind();
this.RepNew.DataSource = new GkSystem.BLL.News().GetNewNews("ISDELETE=0 AND ISAUTH=1",10);
this.RepNew.DataBind();
}
}
protected void RepNewsClass_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = (Repeater)e.Item.FindControl("RepNews");
int ClassID = (int)((DataRowView)e.Item.DataItem)["ClassID"];
rep.DataSource = new GkSystem.BLL.News().GetTopNews("ClassID=" + ClassID + " and ISDELETE=0 AND ISAUTH=1", 6);
rep.DataBind();
Literal lt_PicNews = (Literal)e.Item.FindControl("lt_PicNews");
lt_PicNews.Text = GetPicNews(ClassID);
}
}
protected string GetPicNews(int ClassID)
{
string tmp = "";
using (SqlDataReader dr=GkSystem.DBUtility.SqlHelper.ExecuteReader(GkSystem.DBUtility.SqlHelper.ConnectionString,CommandType.Text,"select top 1 * from gk_sys_news where IsPicNews = 1 and Classid = "+ClassID.ToString()))
{
if (dr.Read())
{
tmp += "<li class=\\"pic\\"><a target='_blank' href='/news/" + dr["NewsID"].ToString() + "。htm' title='" + dr["title"].ToString() + "'><img src=\\"";
if (String.IsNullOrEmpty(dr["TitlePic"].ToString()))
tmp += "/images/no-pic。gif\\"";
else
tmp += dr["TitlePic"].ToString() + "\\"";
tmp += " /></a></li><li><a target='_blank' href='/news/" + dr["NewsID"].ToString() + "。htm' title='" + dr["title"].ToString() + "'>" + GkSystem.Utility.MyString.SubString(dr["Title"].ToString(), 16, "") + "</a></li>";
}
else
{
tmp = "<li class=\\"pic\\"><img src='/images/no-pic。gif' /></li><li></li>";
}
}
return tmp;
}
}