ASP.NET中 Repeater嵌套应用

精贴 置顶
2054 0

     Repeater嵌套问题,可以简单的理解为双重for循环。原理其实是一样的,下面是我在项目中摸索的,编译通过,效果明显。呵呵, 好了

源码如下:

 


[c-sharp] view plaincopyprint?
  1. <div style="width: 924px; height: 278px; line-height:20px;">  
  2.         <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">  
  3.             <ItemTemplate>  
  4.                 <div class="wenzi" style="background: #F9F7F7; width: 924px; height: 293px; border: 1px dashed #CCCCCC;  
  5.                     margin: auto; margin-top: 8px; border-top: #FC89A1 solid 1px;">  
  6.                     <div style="width: 350px; height: 275px; float: left; margin:20px auto auto 10px;">  
  7.                         <a style="margin: 20px auto auto 10px; " mce_style="margin: 20px auto auto 10px; ">  
  8.                             <asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("ImageUrlPlotos") %>' Width="301"  
  9.                                 Height="181" valign="top" />  
  10.                         </a>  
  11.                         <div class="we8">  
  12.                             <b>  
  13.                                 <%#Eval("wineHeaderName")%></b>     <a href="../wineparty.aspx?wineHeaderID=<%#Eval(" mce_href="wineparty.aspx?wineHeaderID=<%#Eval("WinePartyHeaderId") %>" class="we8" style=" text-align:right;">查看详情</a><br />  
  14.                             <b>酒会时间</b>:  
  15.                             <%#DataBinder.Eval(Container.DataItem, "ActivityDate""{0:yyyy-mm-dd}")%>  
  16.                                      参加人数:  
  17.                             <%#Eval("Quantity")%>人以上<br />  
  18.                             <b>介绍</b>:<%#Eval("Description")%></div>  
  19.                         <br />  
  20.                     </div>  
  21.                     <div class="wenzi" style="width: 560px; height: 275px; float: left;">  
  22.                         <asp:Repeater ID="Repeater2" runat="server">  
  23.                             <ItemTemplate>   
  24.                                 <div style="float: left; width: 128px; height: 204px; margin: 20px auto auto 10px;">  
  25.                                     <div align="center" style="border: 1px solid #CCCCCC; background: #FFFFFF;" mce_style="border: 1px solid #CCCCCC; background: #FFFFFF;">  
  26.                                         <img src='<%#Eval("ImageUrl")%>' alt='<%#Eval("Name")%>' /></div>  
  27.                                     <div style="background-color: #F9F7F7; text-align: center; color: #333333;" mce_style="background-color: #F9F7F7; text-align: center; color: #333333;">  
  28.                                         <%# Eval("Name") %></div>  
  29.                                 </div>  
  30.                             </ItemTemplate>  
  31.                         </asp:Repeater>  
  32.                     </div>  
  33.                 </div>  
  34.             </ItemTemplate>  
  35.         </asp:Repeater>  
  36.     </div>  

 

 

 

下面是后台代码的绑定外层Repeater数据方法:

 


[c-sharp] view plaincopyprint?
  1. /// <summary>   
  2.        /// 绑定Repeater数据源   
  3.        /// </summary>   
  4.        protected void GetBind()  
  5.        {  
  6.            Repeater1.DataSource = BindData();  
  7.            Repeater1.DataBind();  
  8.        }  
  9.        ///// <summary>   
  10.        /// 绑定数据源   
  11.        /// </summary>   
  12.        /// <returns></returns>   
  13.        protected IList BindData()  
  14.        {  
  15.            using (RoalDragonBoatDADataContext ctx = new RoalDragonBoatDADataContext())  
  16.            {  
  17.                var query_WineParty = from query_wineHeader in ctx.Nop_WinePartyHeader  
  18.                                       join query_winePlotos in ctx.Nop_WinePartyPhotos  
  19.                                       on query_wineHeader.WinePartyHeaderId equals query_winePlotos.WinePartyHeaderId  
  20.                                       //join query_winePartyProduct in ctx.Nop_WinePartyProduct   
  21.                                       //on query_wineHeader.WinePartyHeaderId equals query_winePartyProduct.WinePartyHeaderId   
  22.                                       //join query_Product in ctx.Nop_Product   
  23.                                       //on query_winePartyProduct.ProductId equals query_Product.ProductId   
  24.                                       //join query_product_picture in ctx.Nop_ProductPicture   
  25.                                       //on query_Product.ProductId equals query_product_picture.ProductID   
  26.                                       join query_wineplace in ctx.Nop_WinePartyPlace  
  27.                                       on query_wineHeader.WinePartyHeaderId equals query_wineplace.WinePartyHeaderId  
  28.                                       select new  
  29.                                       {  
  30.                                           query_winePlotos.WinePartyPhotosId,  
  31.                                           query_wineHeader.WinePartyHeaderId,  
  32.                                           wineHeaderName = query_wineHeader.Name,  
  33.                                           query_wineplace.Quantity,  
  34.                                           ImageUrlPlotos = query_winePlotos.ImageUrl == null ? "" : "../" + query_winePlotos.ImageUrl,  
  35.                                           query_winePlotos.Description,  
  36.                                           query_wineHeader.ActivityDate,  
  37.                                           //query_Product.Name,   
  38.                                           //ImageUrlPicture = PictureManager.GetPictureUrl(query_product_picture.PictureID, 200, false)   
  39.                                       };  
  40.                return query_WineParty.ToList();  
  41.            }  
  42.        }  

 

 

 

下面是绑定内嵌Repeater数据集方法:

 


[c-sharp] view plaincopyprint?
  1. /// <summary>   
  2.  /// 在项被数据绑定后 , 绑定内嵌Repeater   
  3.  /// </summary>   
  4.  /// <param name="sender"></param>   
  5.  /// <param name="e"></param>   
  6.  protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)  
  7.  {  
  8.      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
  9.      {  
  10.          Repeater rpColumnNews = (Repeater)e.Item.FindControl("Repeater2");  
  11.          string[] newrowv = e.Item.DataItem.ToString().Split(new char[] { ',' });  
  12.          //提取ID  格式:——>wineHeaderID=1 截取字符串   
  13.          string wineHeaderID = Convert.ToString(newrowv[1]);  
  14.          int index = wineHeaderID.LastIndexOf("=");  
  15.          rpColumnNews.DataSource = GetNop_WinePartyProduct(int.Parse(wineHeaderID.Substring(index + 1)));  
  16.          rpColumnNews.DataBind();  
  17.      }  
  18.  }  
  19.  /// <summary>   
  20.  /// 绑定内嵌Repeater数据源   
  21.  /// </summary>   
  22.  /// <returns></returns>   
  23.  protected IList GetNop_WinePartyProduct(int winePartyHeaderID)  
  24.  {  
  25.      using (RoalDragonBoatDADataContext ctx = new RoalDragonBoatDADataContext())  
  26.      {  
  27.          var query = (from query_winePartyProduct in ctx.Nop_WinePartyProduct  
  28.                       join query_Product in ctx.Nop_Product  
  29.                       on query_winePartyProduct.ProductId equals query_Product.ProductId  
  30.                       join query_product_picture in ctx.Nop_ProductPicture  
  31.                       on query_Product.ProductId equals query_product_picture.ProductID  
  32.                       where query_winePartyProduct.WinePartyHeaderId == winePartyHeaderID  
  33.                       select new  
  34.                       {  
  35.                           query_Product.Name,  
  36.                           ImageUrl = PictureManager.GetPictureUrl(query_product_picture.PictureID, 200, false)  
  37.                       }).Take(4);  
  38.          return query.ToList();  
  39.      }  
  40.  }  

 

 

绑定数据方法,大同小异,大家可以根据自己的需求更改所需方法;

 顺便把Repeater分页方法也粘贴出来吧。希望对大家有帮助!

 


[c-sharp] view plaincopyprint?
  1. protected void Page_Load(object sender, EventArgs e)  
  2.        {  
  3.            if (!IsPostBack)  
  4.            {  
  5.                labPage.Text = "1";  
  6.                contrlRepeater();  
  7.            }  
  8.        }  
  9.        //Repeater分页控制显示方法   
  10.        public void contrlRepeater()  
  11.        {  
  12.            //pb pb1 = new pb();   
  13.            //DataSet ss = new DataSet();   
  14.            //ss = pb1.returnDs("select top 200 [标题],[时间] from news");   
  15.            PagedDataSource pds = new PagedDataSource();  
  16.            pds.DataSource = BindData();  
  17.            pds.AllowPaging = true;  
  18.            pds.PageSize = 3;  
  19.            pds.CurrentPageIndex = labPage.Text == "" ? 1 : Convert.ToInt32(this.labPage.Text) - 1;  
  20.            LabCountPage.Text = pds.PageCount.ToString();  
  21.            labPage.Text = (pds.CurrentPageIndex + 1).ToString();  
  22.            this.lbtnpritPage.Enabled = true;  
  23.            this.lbtnFirstPage.Enabled = true;  
  24.            this.lbtnNextPage.Enabled = true;  
  25.            this.lbtnDownPage.Enabled = true;  
  26.            if (pds.CurrentPageIndex < 1)  
  27.            {  
  28.                this.lbtnpritPage.Enabled = false;  
  29.                this.lbtnFirstPage.Enabled = false;  
  30.            }  
  31.            if (pds.CurrentPageIndex == pds.PageCount - 1)  
  32.            {  
  33.                this.lbtnNextPage.Enabled = false;  
  34.                this.lbtnDownPage.Enabled = false;  
  35.            }  
  36.            Repeater1.DataSource = pds;  
  37.            Repeater1.DataBind();  
  38.            BindDropList();  
  39.        }  
  40.        /// <summary>   
  41.        /// 首页   
  42.        /// </summary>   
  43.        /// <param name="sender"></param>   
  44.        /// <param name="e"></param>   
  45.        protected void lbtnFirstPage_Click(object sender, EventArgs e)  
  46.        {  
  47.            this.labPage.Text = "1";  
  48.            DropDownList1.SelectedValue = this.labPage.Text;  
  49.            this.contrlRepeater();  
  50.        }  
  51.        /// <summary>   
  52.        /// 上一页   
  53.        /// </summary>   
  54.        /// <param name="sender"></param>   
  55.        /// <param name="e"></param>   
  56.        protected void lbtnpritPage_Click(object sender, EventArgs e)  
  57.        {  
  58.            if (labPage.Text != "")  
  59.            {  
  60.                this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) - 1);  
  61.                DropDownList1.SelectedValue = this.labPage.Text;  
  62.            }  
  63.            this.contrlRepeater();  
  64.        }  
  65.        /// <summary>   
  66.        /// 下一页   
  67.        /// </summary>   
  68.        /// <param name="sender"></param>   
  69.        /// <param name="e"></param>   
  70.        protected void lbtnNextPage_Click(object sender, EventArgs e)  
  71.        {  
  72.            if (labPage.Text != "")  
  73.            {  
  74.                this.labPage.Text = Convert.ToString(Convert.ToInt32(labPage.Text) + 1);  
  75.                DropDownList1.SelectedValue = this.labPage.Text;  
  76.            }  
  77.            this.contrlRepeater();  
  78.        }  
  79.        /// <summary>   
  80.        /// 末页   
  81.        /// </summary>   
  82.        /// <param name="sender"></param>   
  83.        /// <param name="e"></param>   
  84.        protected void lbtnDownPage_Click(object sender, EventArgs e)  
  85.        {  
  86.            this.labPage.Text = this.LabCountPage.Text;  
  87.            DropDownList1.SelectedValue = this.labPage.Text;  
  88.            this.contrlRepeater();  
  89.        }  

  • 没有任何评论
今日天气 ···

···

···

···

热门排行
用ASP实现网页BBS 2010-11-01
CSS cursor鼠标样式一览表 2012-06-25
.NET后台写JS代码 2011-11-03
网站地址多出jdfwkey的问题解析及... 2010-08-25
数据库xxx的日志已满,请备份该数... 2013-07-19
百度、google、Yahoo网站地图制作... 2011-01-30
<a>标签的伪类书写顺序问题... 2010-09-04
什么是长尾关键词? 2010-09-24
CEO名言 2010-08-31
Mysql 主从数据库同步 2010-09-12
博主推荐
本个人博客微信公众平台上线啦~~... 2013-10-13
饼哥网络互联上线啦~~要买域名空... 2013-09-20
网站title标题如何正确修改不会被... 2013-08-26
饼哥通讯录系统上线啦,欢迎大家... 2013-08-24
ASP .NET MYSQL 的简单分页 并不... 2013-08-19
网站有弹窗广告这样的站点,百度... 2013-08-17
做淘宝SEO优化需要注意的8大问题 2013-08-17
淘宝网怎么做SEO优化 2013-08-17
站长们要学习的“苍井空精神” 2013-08-17
苹果公司今日发布了iOS 7第五个开... 2013-08-07
随便看看
.Net中正则表达式 2013-08-22
Access注入语句大全 2010-12-07
C#正则表达式小结 2011-01-08
关键词叠加 2010-09-21
怎么看关键词优化得好不好? 2010-09-19
什么是泛域名解析 2013-10-21
用Windows 7媒体中心 浏览照片更... 2011-01-20
用JS获得当前页面详细地址 2013-06-15
sqlsql2000自动备份设置 2013-11-09
Java实现的stack pop方法小细节 2013-06-24
RSS新闻
传媒新闻
CSDN
八卦新闻
女性新闻
台湾新闻
互联网
军事-新浪博客
IT-新浪博客
汽车新闻
游戏新闻
国际新闻
国内新闻
体育新闻
我的微博
北京 上海 杭州 深圳 广州 成都