2012-04-18 1 views
4

많은 검색을했는데이를 이해할 수 없습니다.ModalPopupExtender로 설정하면 링크 OnClick 코드가 실행되지 않습니다. TargetControlID

사용자가 링크 DoSomething을 클릭 할 때 표시 할 ModalPopupExtender 팝업이 있습니다. 팝업에는 사용자가 대화 상자를 열 것을 요구할 때 즉석에서 채우려는 드롭 다운 컨트롤이 있습니다. 이것은 코드 뒤에 서버를 통해 일어날 필요가있다. 현재 나는 링크 OnClick 이벤트를 통해 그것을하려고하지만 링크가 ModalPopupExtender에 연결되면 링크 OnClick 코드가 실행되지 않습니다.

코드는 : 나는의 OnClick 코드가 실행되지 않는 링크로 ModalPopupExtender를 설정 한

<asp:LinkButton ID="lnkDoSomething" runat="server" onClick="lnkDoSomething_Click">Do Something</asp:LinkButton> 
<asp:ModalPopupExtender ID="mpelnklnkDoSomething" runat="server" BackgroundCssClass="modalBackground" 
    DropShadow="true" PopupControlID="lnkDoSomething" 
    PopupDragHandleControlID="pnlDragHandlerForlnkDoSomething" 
    TargetControlID="lnklnkDoSomething"></asp:ModalPopupExtender> 

문제는 즉시이다. 이것은 분명히 의도적으로 설계되었지만 사용자가 OnClick 코드를 실행해야하는 링크를 클릭하는 것처럼 (순진한) 나에게 이해가되지 않습니다.

이것이 지원되지 않는 이유와 올바른 해결책은 무엇입니까?

답변

8

더미 버튼에 ModalPopupExtender를 부착하고의 모달을 보여 LinkButtonOnClick도 코드 숨김부터 :

마크 업 : 코드 숨김

<asp:LinkButton ID="lnkDoSomething" runat="server" onClick="lnkDoSomething_Click">Do Something</asp:LinkButton> 
<asp:Button id="dummyButton" runat="server" style="display:none;" /> 

<asp:ModalPopupExtender ID="mpelnklnkDoSomething" runat="server" 
    BackgroundCssClass="modalBackground" DropShadow="true" PopupControlID="controlToPopUpId" 
    PopupDragHandleControlID="pnlDragHandlerForlnkDoSomething" 
    TargetControlID="dummyButton"></asp:ModalPopupExtender> 

:

protected void lnkDoSomething_Click(Object sender, EventArgs e) 
    { 
    //do work 
    mpelnklnkDoSomething.Show(); 
    } 
+0

우수 감사합니다. 릭이 작동합니다. 관련 메모에서 "왜"더미 버튼에 연결해야하는지 알고 있습니까? 이것은 본질적으로 해결되는 것처럼 보입니다. 핵심 ASP 디자인 이유가 있다면 왜 링크에 허용하지 않는지 궁금합니다. –

+0

단추/링크 단추를 연결하면 ModalPopUpExtender가 클라이언트 쪽 onclick 이벤트를 인계 받아 "팝업". 실제 클라이언트 측 클릭 이벤트를 취소하는 false를 반환합니다. 더미 버튼은 실제로 ASP.NET에서 필요합니다. 아마도 인터페이스가 구현되므로 ASP.NET 페이지 수명주기를 통해 이벤트를 연결시킬 수 있습니다. –

+0

감사합니다 rick_schott. – ZahidKakar

관련 문제