优秀是一种习惯,不求进步很大,但求天天进步。

像蜗牛一样爬行,坚信总有一天我有属于我的一片天。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Repeater中嵌套repeater实现大类别中的小类表绑定。

Posted on 2010-12-16 21:06  StartFromZero  阅读(462)  评论(0编辑  收藏  举报

最近做一个问答系统,

大类别中的小类别同时在首页显示,

然后就用到repeater的嵌套。

-

Repeater.aspx:

<asp:Repeater ID="SortListRpt" runat="server" OnItemDataBound="SortListRpt_ItemDataBound">
      <ItemTemplate>
    <ul class="c1"><li>
      <a href='SortList.aspx?id=<%# Eval("sid")%>' target="_blank"><%# Eval("sname")%></a>
               <ul class="c2">
 <asp:Repeater ID="SecondSortListRpt" runat="server">
      <ItemTemplate>
 <span><a href='SSortList.aspx?ssid=<%# Eval("ssid")%>' target="_blank"><%# Eval("ssname")%>
 </a></span>
      </ItemTemplate>
      </asp:Repeater>     
            </ul>
               </li></ul>
         </ItemTemplate>
   </asp:Repeater>

Repeater.aspx.cs

 

protected void SortListRpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {

        //判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,

        //HeaderTemplate,,ItemTemplate,SeparatorTemplate)
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater rep = e.Item.FindControl("SecondSortListRpt") as Repeater;//找到里层的repeater对象
            DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
            int typeid = Convert.ToInt32(rowv["sid"]); //获取填充子类的id
         
            rep.DataSource =WenDa_bll.GetSecondSortListBySid(typeid);
            rep.DataBind();
        }
    }

over。呵呵!