Repeater中嵌套Repeater的示例介绍

 在某些特殊情况下是需要在Repeater中嵌套使用Repeater的,下面有个不错的示例,感兴趣的朋友可以参考下

代码如下:
protected void Page_Load(object sender, EventArgs e) 

if (!Page.IsPostBack) 

this.dtCategory = GetCategoryTable(); 
this.dtProduct = GetProductTable(); 
rptCategoryList.DataSource = dtCategory; 
rptCategoryList.DataBind(); 


// 准备一张分类表 
DataTable GetCategoryTable() 

DataTable dt = new DataTable(); 
dt.Columns.Add("CategoryId", typeof(int)); 
dt.Columns.Add("CategoryTitle", typeof(string)); 
for (int i = 1; i <= 3; i++) 

DataRow row = dt.NewRow(); 
row["CategoryId"] = i; 
row["CategoryTitle"] = "分类名字 " + i + ""; 
dt.Rows.Add(row); 

return dt; 

// 准备一张产品表 
DataTable GetProductTable() 

DataTable dt = new DataTable(); 
dt.Columns.Add("ProductTitle", typeof(string)); 
dt.Columns.Add("CategoryId", typeof(int)); 
for (int i = 1; i <= 9; i++) 

DataRow row = dt.NewRow(); 
row["ProductTitle"] = "产品名字 " + i + ""; 
if (i > 6) row["CategoryId"] = 3; 
else if (i > 3) row["CategoryId"] = 2; 
else row["CategoryId"] = 1; 
dt.Rows.Add(row); 

return dt; 

// 获取某个类别的产品 
DataTable GetProductTable(int categoryId) 

DataView dv = this.dtProduct.DefaultView; 
dv.RowFilter = " CategoryId=" + categoryId + " "; 
return dv.ToTable(); 

protected void rptCategoryList_ItemDataBound(object sender, RepeaterItemEventArgs e) 

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 

DataRowView drv = (DataRowView)e.Item.DataItem; 
Literal ltlTitle = (Literal)e.Item.FindControl("ltlTitle"); 
ltlTitle.Text = drv["CategoryTitle"].ToString(); 
Repeater rptProductList = (Repeater)e.Item.FindControl("rptProductList"); 
rptProductList.DataSource = GetProductTable(Convert.ToInt32(drv["CategoryId"])); 
rptProductList.DataBind(); 


protected void rptProductList_ItemDataBound(object sender, RepeaterItemEventArgs e) 

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 

DataRowView drv = (DataRowView)e.Item.DataItem; 
Literal ltlTitle = (Literal)e.Item.FindControl("ltlTitle"); 
ltlTitle.Text = drv["ProductTitle"].ToString(); 


 
前台aspx代码 
代码如下:
<</CODE>form id="form1" runat="server"> 
<</CODE>div> 
<</CODE>asp:Repeater ID="rptCategoryList" runat="server" OnItemDataBound="rptCategoryList_ItemDataBound"> 
<</CODE>ItemTemplate> 
<</CODE>div class="listBox"> 
<</CODE>div class="title"> 
<</CODE>asp:Literal ID="ltlTitle" runat="server"></</CODE>asp:Literal></</CODE>div> 
<</CODE>div class="content"> 
<</CODE>ul> 
<</CODE>asp:Repeater ID="rptProductList" runat="server" OnItemDataBound="rptProductList_ItemDataBound"> 
<</CODE>ItemTemplate> 
<</CODE>li> 
<</CODE>asp:Literal ID="ltlTitle" runat="server"></</CODE>asp:Literal> 
</</CODE>li> 
</</CODE>ItemTemplate> 
</</CODE>asp:Repeater> 
</</CODE>ul> 
</</CODE>div> 
</</CODE>div> 
</</CODE>ItemTemplate> 
</</CODE>asp:Repeat</</CODE>div> 
</</CODE>form> 

时间: 2024-10-31 12:39:18

Repeater中嵌套Repeater的示例介绍的相关文章

Repeater中嵌套Repeater的示例介绍_实用技巧

复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.dtCategory = GetCategoryTable(); this.dtProduct = GetProductTable(); rptCategoryList.DataSource = dtCategory; rptCategoryList.DataBind(); } } // 准备一张分类表 Da

Repeater中嵌套Repeater的示例

代码如下: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.dtCategory = GetCategoryTable(); this.dtProduct = GetProductTable(); rptCategoryList.DataSource = dtCategory; rptCategoryList.DataBind(); } } // 准备一张分类表 DataTab

在Repeater中嵌套使用Repeater

在一般的网站中浏览类别的用户控件通常都位于大多数 ASP.NET 页的左边,它使用户能够按类别快速的查找产品.最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加进去.一来更方便,二来加长了左部导航栏的长度使页面更协调.原有的分类导航栏是由Repeater实现的,现在需要在每一个分类下加入该类的商品信息,于是我想到了在原有Repeater中嵌套Repeater.实现界面如下: 前台页面部分: <asp:Repeater id="rptCategorie

asp.net中在repeater中嵌套RadioButtonList控件

问题描述 asp.net中在repeater中嵌套RadioButtonList控件 asp.net中在repeater中嵌套RadioButtonList控件,例如一道题目,四个选项,如何绑定RadioButtonList的值,如何获取RadioButtonList被选中的值 解决方案 http://stackoverflow.com/questions/11077534/asp-net-radiobuttonlist-in-repeater 解决方案二: asp.net Repeater嵌套

jQuery中$.fn的用法示例介绍

jQuery中$.fn的用法示例介绍 $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个jquery实例都可以引用这个方法了. 那么你可以这样子:$("#div").abc();  jQuery为开发插件提拱了两个方法,分别是:  jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法. jQuery.fn

新手小白:在Repeater中嵌套文件下载与打开

问题描述 怎么样才能实现点击文件名打开文件,点击下载就能下载文件呢?本人是新手,才接触不久 解决方案 解决方案二: 解决方案三:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;publicpartialclassFileDownload:System.Web.UI.Page{protected

javascript中正则表达式反向引用示例介绍

 这篇文章主要介绍了javascript中正则表达式反向引用,需要的朋友可以参考下 最近遇到一个需求,传入一个字符串,每三个字符插入一个空格    例:    传入abcd1234    输出 abc d12 34    思考了一下,准备写一个函数如下   代码如下: function appendSpace(s)  {  var length = s.length;  var result = "";  var last = 0;  for(var i = 3;i<=lengt

JavaScript中for-in遍历方式示例介绍

 for-in遍历方式的循环计数器是字符串类型,遍历对象时为对象属性/方法名,遍历数组时为数组元素下标索引,与普通的for循环不同,需要的朋友可以参考下 摘要:for-in遍历方式的循环计数器是字符串类型,遍历对象时为对象属性/方法名,遍历数组时为数组元素下标索引,与普通的for循环不同,for-in会将继承的属性/方法列出,这一点在使用时需要特别关注.    除了传统的for循环,JavaScript为遍历操作定义了for-in方式,根据数据源的不同,在使用时存在差异.  (1)遍历对象: 

JavaScript中for-in遍历方式示例介绍_javascript技巧

摘要:for-in遍历方式的循环计数器是字符串类型,遍历对象时为对象属性/方法名,遍历数组时为数组元素下标索引,与普通的for循环不同,for-in会将继承的属性/方法列出,这一点在使用时需要特别关注. 除了传统的for循环,JavaScript为遍历操作定义了for-in方式,根据数据源的不同,在使用时存在差异. (1)遍历对象: 复制代码 代码如下: var fish = { head : 1, tail : 1, } for(var prop in fish) { console.log(