2013-08-01 3 views
1

다른 리피터 내부에서 리피터를 사용할 수 있습니까? 방법?리피터 내부에서 리피터를 사용하는 방법

제 문제는 백엔드가 중계기 내부의 중계기를 볼 수 없다는 것입니다.

FRONT :

<div id="blogright"> 
    <ul class="accordion"> 
      <asp:Repeater ID="parentRep" runat="server"> 
      <ItemTemplate> 
        <li class="2010"> 
        <a href="blog.aspx?id=<%# Eval("DYear") %>"><%# Eval("DYear") %><span><%# Eval("PCount") %></span></a> 
        <ul class="sub-menu"> 
        <asp:Repeater ID="childRep" runat="server"> 
         <ItemTemplate> 
          <li><a href="#"><em><%# Eval("DDay") %></em><%# Eval("DMonth") %><span><%# Eval("ICount") %></span></a></li>  
         </ItemTemplate> 
        </asp:Repeater> 
        </ul> 
       </li> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ul> 
</div> 

BACK : 내 영어

//This is for parentRep 
daString = "SELECT datepart(YEAR,BLG_DATE) as DYear,COUNT(BLG_DATE) as PCount FROM [BLG] INNER JOIN [ACC] ON [BLG].ACC_ID=[ACC].ACC_ID WHERE [BLG].ACC_ID='"+userID+"' GROUP BY BLG_DATE"; 
SqlDataAdapter da2 = new SqlDataAdapter(daString, conn); 
DataTable dt2 = new DataTable(); 
da2.Fill(dt2); 

parentRep.DataSource = dt2; 
parentRep.DataBind(); 

//This is for childRep 
dt.Clear(); 
daString = "SELECT DATEPART(DAY,BLG_DATE) as DDay,datename(month,BLG_DATE) as DMonth,DATEPART(YEAR,BLG_DATE) as DYear FROM [BLG] INNER JOIN [ACC] ON [BLG].ACC_ID=[ACC].ACC_ID WHERE [BLG].ACC_ID='"+userID+"' and BLG_DATE like '%"+urlId+"%'"; 
SqlDataAdapter da3 = new SqlDataAdapter(daString, conn); 
DataTable dt3 = new DataTable(); 
da2.Fill(dt3); 

//can't see the childRep here. 

죄송합니다.

당신은 자식 리피터에 대한 참조를 얻고하여 ItemDataBound 이벤트에서 이런 식으로 데이터를 바인딩 할 수 있습니다
+1

을 'DataSource' 속성을 코드 대신에 선언적으로 설정합니다. –

답변

2

:

protected void parentRep_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     Repeater childRepeater = (Repeater)e.Item.FindControl("childRep"); 
     childRepeater.ItemDataBound += new RepeaterItemEventHandler(childRepeater_ItemDataBound); 
     childRepeater.ItemCommand += new RepeaterCommandEventHandler(childRepeater_ItemCommand); 
     childRepeater.DataSource = dt3; //dt3 is the DataTable from your code sample 
     childRepeater.DataBind(); 
    } 
} 
또한

,이 스레드에서 매우 철저 답이있다 : I 제안 Repeater in Repeater

+0

아이디어를 주셔서 감사합니다. D –

관련 문제