asp:Repeater的嵌套,主要是想实现导航的下拉菜单功能,类似以下效果

前台代码
<li> <a href="#"><%#DataBinder.Eval(Container.DataItem,"title")%><b></b></a> <ul class="subnav"> <li> <a href="#"><%#DataBinder.Eval(Container.DataItem,"title")%></a> </li> </ul></li>
后台代码
public void rptNav_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpColumnNews = (Repeater)e.Item.FindControl("rptNav",2);
//找到分类Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;
//提取分类ID
int pId = Convert.ToInt32(rowv["id"].ToString(),2);
BLL.category bll = new BLL.category(,2);
DataTable dt = bll.GetList(pId, 1,2);
Repeater rptNavSub = (Repeater)e.Item.FindControl("rptNavSub",2);
rptNavSub.DataSource = dt;
rptNavSub.DataBind(,2);
dt.Dispose(,2);
}
}如果在后台代码中直接使用rptNavSub.DataSource的话,编译的时候会出现错误提示:rptNavSub上下文不存在
如果要让rptNavSub绑定数据,必须Repeater rptNavSub = (Repeater)e.Item.FindControl("rptNavSub",2);
嵌套之后页面就不止1个rptNavSub,所以其实嵌套的Repeater的ID实际上是后生成的,并不是我们指定的Repeater。
编程那点事
