2012-03-09 12 views
1

ascx 컨트롤에 masterpage의 Page_Load()를로드하고 있는데, ascx 컨트롤에 asp UpdatePanel이 있습니다. 마스터 페이지에서Page_Load에 UpdatePanel이 추가되지 않았습니다.

로드 ASCX :

 protected void Page_Load(object sender, EventArgs e) 
    {  
     usercontrols.mainmenu adminmenu = (usercontrols.mainmenu)LoadControl("~/mymenupath.ascx"); 
     //phmainmanu is a placeholder in masterpage 
     phmainmanu.Controls.Add(adminmenu);    
    } 

문제는 이것이다 : 나는 UserControl을 masterpage 내부에서 작동하지 않는 것입니다 이런 식으로 내 UpdatePanel을로드하는 경우 ,하지만 난 내 masterpage에 등록 태그를 추가하는 경우 코드를 입력하고 UpdatePanel이 정상적으로 작동하도록 ascx를 가져옵니다.

<%@ Register Src="~/admin/usercontrols/contentexplorer.ascx" TagName="Tree" TagPrefix="NAV" %> 

<NAV:Tree ID="treenav" runat="server" /> 

가 나는 다른 페이지 수명주기 이벤트에 컨트롤을로드 할 수도 있습니다 가정, 나는 후 Page_Init을 시도했지만 작동하지 않았다, 도와주세요.

+0

Page_Init에로드 할 때 "작동하지 않음"은 무엇입니까? 전혀 필요하지 않은 이유는 동적으로 추가하는 이유는 무엇입니까? 너는 너의 인생을 필요한 것보다 어렵게 만들고있어. –

+0

UpdatePanel이 예상대로 작동하지 않음을 의미합니다! 버튼과 레이블이 UpdatePanel 내용에 있습니다. 버튼은 함수를 가진 트리거입니다. 클릭하면 레이블의 텍스트가 변경되어 UpdatePanel이 작동하는 전체 페이지가 다시로드되므로 작동하지 않습니다. 텍스트를 바꿔야합니다. –

답변

-1

PreInit 이벤트에 추가 할 수 있습니다. 블로그 게시물 this을 읽고 필요한 내용을 논의하십시오.

편집 : 당신이 masterpage에서이 작업을 수행하려고하기 때문에 @ 팀은 지적

당신은 PreInit 이벤트가 없습니다. 대안으로 trick (또는 this)을 사용할 수 있지만 일반적으로 선택의 여지가 거의 없습니다.

+0

MasterPage에는 PreInit이 없습니다. –

+0

일반적으로 그는 ** 항상 ** 더 나은 선택 인 동적 대신에 선언적으로 추가 할 수있는 선택을했습니다 **) –

+0

@TimSchmelter - 필자는 그가 제공 한 컨텍스트에서 도움을 얻으 려했습니다. – TheBoyan

0

앞서 지적한대로 PreInit은 마스터 페이지에 존재하지 않습니다. 그러나 필요하지 않습니다. 그냥 당신이 UpdatePanel의 ContentTemplateContainer의 자식 컨트롤로의 UserControl을 추가하고 있는지 확인하십시오

protected void Page_Load(object sender, EventArgs e) 
{ 
    WebUserControl1 ctrl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx"); 
    UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl); 
} 

는 희망이 도움이!

+0

안녕하세요. 감사합니다. 제 컨트롤이 왜 UpdatePanel에 없습니까?UpdatePanel에는 레이블과 버튼이 있으며 모든 ascx 컨트롤이 masterpage에있는 자리 표시 자에로드됩니다. 분명히 알 수 있습니다. UpdatePanel에서 ascx를로드하려고하지 않습니다. –

+0

그래서 버튼 내부 이벤트 핸들러가 표시되지 않습니다. UserControl 발생? – Reinaldo

+0

예, 제가 placeholder.Controls.Add()에서 컨트롤을로드하면 updatePanel의 버튼이 아약스 호출을 발생시키지 않지만, masterPage에 "<@ Register"태그 버튼을 등록하면 updatePanel의 버튼이 제대로 작동합니다. –

0

"작동하지 않음"(작동하지 않는 것)이 무엇인지 모르겠지만 컨트롤 목록에 추가하기 전에 컨트롤의 ID를 설정해야합니다. 그렇지 않으면 이벤트가 올바르게 실행되지 않을 수 있습니다. :

protected void Page_Load(object sender, EventArgs e) 
{ 
    WebUserControl1 ctrl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx"); 
    ctrl.ID = "controlId"; 
    UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl); 
} 
관련 문제