repeater中嵌套使用repeater。如图
本例使用 vs.net 2008(c#)编写。来自 admin10000.com
后台cs代码
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代码
<form id="form1" runat="server">
<p>
<asp:repeater id="rptcategorylist" runat="server" onitemdatabound="rptcategorylist_itemdatabound">
<itemtemplate>
<p class="listbox">
<p class="title">
<asp:literal id="ltltitle" runat="server"></asp:literal></p>
<p class="content">
<ul>
<asp:repeater id="rptproductlist" runat="server" onitemdatabound="rptproductlist_itemdatabound">
<itemtemplate>
<li>
<asp:literal id="ltltitle" runat="server"></asp:literal>
</li>
</itemtemplate>
</asp:repeater>
</ul>
</p>
</p>
</itemtemplate>
</asp:repeater>
</p>
</form>
下载代码示例:pagedemo.rar
相关文档: repeater控件的分页实现 repeater控件实现编辑、更新、删除操作 repeater多行间隔显示分隔符的方法
以上就是repeater中嵌套使用repeater的详细内容。
