2014-09-19 3 views
0

다른 중계기 안에 중계기가 있습니다. 두 번째 repeater에는 체크 상자 이벤트 "isChecked_OnCheckedChanged"가 있습니다. 내 문제가있다. 이 이벤트가 발생하면 변수 "lblName"의 값과 부모 중계기의 변수 "lblID"값에 액세스해야합니다.다른 중계기 내부의 중계기. 이벤트 값에 액세스하십시오.

<asp:Repeater ID="rptOne" OnItemDataBound="populateSecondRepeater" runat="server"> 
    <HeaderTemplate> 
     <table s> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>'></asp:Label> 
      </td> 
      <td style="width: 15%; vertical-align: top;"> 
       <asp:Repeater ID="rptTwo" runat="server"> 
        <HeaderTemplate> 
         <table> 
        </HeaderTemplate> 
        <ItemTemplate> 
         <tr> 
          <td style="width: 85%;"> 
           <img runat="server" src='<%# Eval("Img") %>' alt="#" id="img_flag" /></td> 
          <td style="width: 15%; padding-right: 40px"> 
           <asp:Label ID="lblName" runat="server" Style="display: none;" Text='<%# Eval("IDName") %>'></asp:Label> 
           <asp:CheckBox ID="check" runat="server" AutoPostBack="True" Checked='<%# Eval("isChecked") %>' OnCheckedChanged="isChecked_OnCheckedChanged" /> 
          </td> 
         </tr> 
        </ItemTemplate> 
        <FooterTemplate> 
         </table> 
        </FooterTemplate> 
       </asp:Repeater> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 
</asp:Repeater> 

변수 "lblName"의 값에 액세스 할 수 있지만 부모 중계기의 값에 어떻게 액세스합니까?

protected void isChecked_OnCheckedChanged(object sender, EventArgs e) 
{ 
     CheckBox chk = (sender as CheckBox); 

     RepeaterItem item = chk.NamingContainer as RepeaterItem; 
     if (item != null) 
     { 

      Label lbl = (Label) item.FindControl("lblName"); 
     } 
} 

감사합니다.

답변

0

여러 가지 방법이 있습니다. ParentID 속성을 데이터 모델에 추가하고 원하는 값으로 설정하여 lblName 레이블 옆의 숨김 필드에 바인딩 할 수 있습니다.

또는 rptOne의 각 항목에 대한 <tr runat="server" id="rptOneRow">을 사용하고, 같은 행을 찾을 때까지 RepeaterItem에서 isChecked_OnCheckedChanged에서 점프. 그런 다음 FindControl을 사용하여 lblID을 찾으십시오.

데이터를 직접 액세스하는 방법은 여기에서 - Accessing parent data in nested repeater, in the HeaderTemplate을 참조하십시오.