2010-05-25 4 views
0

저는이 ASP.NET 항목을 처음 사용합니다. 내 페이지에는 FooterTemplate이있는 Datalist가 있습니다. 꼬리말에는 QueryString에 따라 표시 될 몇 개의 패널이 있습니다. 문제는 Visible 속성을 변경하기 위해 Page_Load에서 이러한 패널을 찾으려고하는 것입니다. Page_Load에서이 컨트롤을 찾는 방법이 있습니까? 코드 숨김에서ASP.NET Panel FindControl 내 DataList 내에서 속성을 변경하려면 C#

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<asp:DataList ID="dlRecords" runat="server"> 
    <FooterTemplate> 
    <asp:Panel ID="pnlArticleHeader" runat="server" Visible="false" > 
    </asp:Panel> 
    </FooterTemplate> 
</asp:Datalist> 
</asp:Content> 
여기

뭔가 : 예를 들어이 영문 페이지의 일부입니다 나는이에 새로운 오전 말했듯이

protected void Page_Load(object sender, EventArgs e) 
    { 
     location = Request.QueryString["location"]; 
     if (location == "HERE") 
     { 
      Panel pnlAH = *Need to find control here*; 
      pnlAH.Visible=true; 
     } 
     } 

. 내가 찾은 모든 것이 효과가없는 것 같아 특정 질문을 게시하기로 결정했습니다.

Panel _pnlArticleHeader; 
    void Item_Created(Object sender, DataListItemEventArgs e) 
    { 

    if (e.Item.ItemType == ListItemType.Footer) 
    { 

     _pnlArticleHeader =(Panel)e.Item.FindControl("pnlArticleHeader"); 
     } 

    } 

분야에서 이벤트 호출 후 : 당신이 패널을 원하는 얻을 것이다 _pnlArticleHeader 사전 DataList에 이벤트가 OnItemCreated있다

답변

0

감사는, 오버라이드 (override)은 행의 선택 유형을 할 수 있습니다. 이 방법은 한 번만 생성되기 때문에 안전합니다. 노트! 일반적인 DataList의 행에 대한 동일한 방법은 마지막 하나만 리턴합니다.

+0

이것은 내가 처음으로 얻은 것입니다. 감사. 지금 가지고있는 유일한 문제는 코드에서 어떻게 사용하는지입니다. 예를 들어 Page_Load에서 QueryString 위치를 얻습니다. 값에 따라 다른 코드 블록이 있습니다. 별도의 OnItemCreated 코드 블록 대신이 코드를이 코드 안에 넣고 싶습니다. 어떻게해야할까요? – SDC

+0

어쩌면 나는 데이터리스트가 어떻게/언제 만들어 졌는지 이해하지 못할 수도있다. 어쩌면 나는 이것이 어떻게 작동하는지에 대한 나의 무지를 보여주고있을 뿐이다. OnItemCreated 외부에서 가져올 수 있습니까? – SDC

+0

@SDC이 작업을 수행하려면이 처리기 'Item_Created'를 Page_Load가있는 동일한 파일에 배치하십시오. 이 이벤트는 Page_load 전에 실행되므로 변수 _pnlArticleHeader가 할당됩니다. 제어를위한 aspx 파일에서 이벤트 처리기를 선언해야합니다 : Dewfy

관련 문제