2009-03-30 2 views
0

다음 구조는 aspx 페이지에 있습니다.다음 코드에서 중첩 된 Asp : GridView를 찾는 방법?

<asp:Panel ID="pnlCust" runat="server"> 
    <asp:GridView ID="gvMaster" runat="server" 
        OnRowCreated="gvMaster_RowCreated"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Panel ID="pnlMaster" runat="server"> 
         //... 
        </asp:Panel> 
        <asp:Panel ID="pnlDetails" runat="server"> 
         <asp:GridView ID="gvDetails" runat="server"> 
          <Columns> 
           //... 
          </Columns> 
         </asp:GridView> 
        </asp:Panel> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
</asp:Panel> 

패널은 Ajax Control Toolkit의 CollapsiblePanelExtender에 사용됩니다.

코드 숨김에서 gvDetails 컨트롤을 찾기 위해 FindControl을 사용하려하지만 gvMaster_RowCreated 이벤트에있는 최신 시도가 작동하지 않습니다.

GridView gv = 
e.Row.FindControl("pnlDetails").FindControl("gvDetails") as GridView; 

여기서 e는 GridViewRowEventArgs

입니다. 기본적으로이 페이지에있는 작업을 수행하고 있지만 SqlDataSource를 사용하지 않고있는 사람은 기본적으로 RowCreated 이벤트에서 전달 된 e 인수에서 FindControl을 통해 SqlDataSource를 찾습니다. 여기에 링크가 있습니다 :

http://mosesofegypt.net/post/2008/02/Building-a-grouping-Grid-with-GridView-and-ASPNET-AJAX-toolkit-CollapsiblePanel.aspx

답변

1

입니다 : 당신은 이런 식으로 뭔가를 시도 할 수 있습니다? 무엇이 제대로 작동하지 않습니까?

+0

위와 같은 방법으로 시도했지만 null 값을 반환 한 다음과 같은 방법으로 처리했습니다. GridView gv = e.Row.FindControl ("gvDetails") as GridView; – Xaisoft

+0

위의 스 니펫을 시도해 보았습니다. 단계를 완료하면 gv가 null입니다. – Xaisoft

+0

나는 내가 곤두박질 친다 고 생각합니다. 죄송합니다! 유일한 시도는 RowCreated 대신 RowDataBound 이벤트를 사용하는 것이지만 너무 길다. –

1

나는의 GridView 그런 자식 컨트롤을 가질 수 있다고 생각하지 않습니다 여기에 링크입니다.

+0

어떤 하위 컨트롤에 대해 이야기하고 있습니까? – Xaisoft

+0

내 편집 된 질문을보십시오. – Xaisoft

0

템플릿 필드에 패널을 배치해야합니다.

protected void gvMaster_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) { 
     GridView gv = (GridView)e.Row.FindControl("gvDetails"); 
    } 
} 

앱이 예외를 던지고있다 : 나를 위해 일한 방법 뒤에 코드가

여기
<asp:Panel ID="pnlCust" runat="server"> 
    <asp:GridView ID="gvMaster" runat="server" > 
     <columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Panel ID="pnlDetails" runat="server"> 
         <asp:GridView ID="gvDtails" runat="server"> 
          <columns> 
           <asp:TemplateField> 
            <ItemTemplate> 
             <%-- columns here --%> 
            </ItemTemplate> 
           </asp:TemplateField> 
          </columns> 
         </asp:GridView> <%-- end gvDetails --%> 
        </asp:Panel> <%-- end pnlDetails--%> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </columns> 
    </asp:GridView> <%-- end gvMaster --%> 
</asp:Panel> <%-- end pnlCust --%> 
+0

네, 실제로 이것은 코드의 모습입니다. 나는 더 명확하게하기 위해 그것을 꺼냈다. 이제 Code Behind에서 gvDetails GridView를 찾으려고 노력 중이다. 내 질문을 템플릿 필드로 업데이트합니다. – Xaisoft

관련 문제