Repeater 2段ネスト


ネストされたフロントフォーマットコード:

<asp:Repeater ID="parentRepeater" runat="server" OnItemCommand="parentRepeater_ItemCommand"
                OnItemDataBound="parentRepeater_ItemDataBound">
     <ItemTemplate>  
       <%#Eval("name") %>
        <div id="news" class="commonfrm">
         <asp:Repeater ID="chirldRepeater" runat="server">
             <HeaderTemplate>
               <table width="100%"; cellspacing="0">
                <tr class="tr_header">
                      <th>       </th>
                </tr>
              </HeaderTemplate>
              <ItemTemplate>
                <tr class="tr_item">
                   <td class="td_header">
                      <a href='showArticle.aspx?newsid=<%# Eval("id")%>' target="_blank"><%#Eval("title") %> </a>
                     </td>
               </tr>
               </ItemTemplate>
              <FooterTemplate>
                  </table>
              </FooterTemplate>
           </asp:Repeater>
         </div>
     </ItemTemplate>
 </asp:Repeater>

バックグラウンドのchirldRepeaterへのバインドはparentRepeaterのOnItemDataBoundイベントを利用しています.

 protected void parentRepeater_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            //  chirldrepeater
            Repeater chirldRepeater = (Repeater)e.Item.FindControl("chirldRepeater");

             //  parentRepeater   id
            DataRowView rowv = (DataRowView)e.Item.DataItem; 
            string CatagoryId = rowv["id"].ToString();

            //  chirldRepeater
            chirldRepeater.DataSource = new NewsDAO().SeleteByCaid(CatagoryId);
            chirldRepeater.DataBind();
        }

    }