您的位置:首页 > 编程学习 > ASP.NET > 正文

repeater控件介绍、 repeater嵌套repeater

更多 时间:2013-11-7 类别:编程学习 浏览量:502

repeater控件介绍、 repeater嵌套repeater

repeater控件介绍、 repeater嵌套repeater

repeater的介绍

DataGrid控件对数据输出格式是自动生成HtmlTable标记的,DataList控件也是这样,它根据数据内容来生成数据控制表格。而Repeater 控件是模板化的数据绑定列表,Repeater 控件是“无外观的”,Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式。即:它不具有任何内置布局或样式,也就不会产生任何数据控制表格来控制数据的显示。因此,我们必须在控件的模板中明确声明所有 HTML 布局标记、格式标记和样式标记。

 

Repeater 控件的几个模板项介绍

 

AlternatingItemTemplate

对交替数据项进行格式设置,与 ItemTemplate 元素类似,但在 Repeater 控件中隔行(交替项)呈现一次。通过设置 AlternatingItemTemplate 元素的样式属性,可以为其指定不同的外观。

 

FooterTemplate

该模板确定了控件页脚的呈现样式,在所有数据绑定行呈现之后呈现的元素。用于控制Repeater 控件底部的样式和布局。

注意 FooterTemplate 不能是数据绑定的。

 

HeaderTemplate

该模板确定了控件页眉的呈现样式,在所有数据绑定行呈现之前呈现一次的元素。用于控制Repeater 控件头部的样式和布局。

注意 HeaderTemplate 项不能是数据绑定的。

 

ItemTemplate

该模板确定了数据项的呈现样式,对每一个数据项进行格式设置,为数据源中的每一行都呈现一次的元素

 

SeparatorTemplate

该模板定义了数据项间隔的呈现样式

 

Repeater数据绑定的实现


DataBind

  • 要想为Repeater控件生成HTML代码,并将其添加到输出流中以显示到最终的浏览器中,必须调用DataBind方法。此外Repeater控件还提供了一下常用事件。

  • ItemCommand
  • 该事件是Repeater中最常用的一个事件,单击Repeater控件中的按钮(Button或LinkButton)时触发该事件。

  • ItemCreate
  • 在创建一个Repeater项时触发该事件,DataItem属性总是返回NULL

  • ItemDataBind
  • 将Repeater控件中的某个项绑定到基层数据以后触发该事件,ItemTemplate和AlternatingItemTemplate绑定项的DataItem属性不为NULL
  •  
  •  
  • Repeater嵌套Repeater 的实现代码
  •  
  • aspx页面代码
  •  
  •  
  • C# 代码   复制
  • 
     <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文件代码

  •  
  • C# 代码   复制
  •  
     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;
         }
     }
     
    		
  •  

    标签:ASP.NET repeater