2011-05-04 2 views
3

다음과 같은 문제가 있습니다 :다시 게시 문제 후 이미지 채우기

단추를 클릭 할 때 이미지 원본을 채우고 이미지를 ModalPopupExtender 안에 표시하려고합니다. ModalPopupExtender를 열려면 UpdatePanel이 포스트 백을 수행하고 이미지 내부에 적절한 뷰를 표시하게하는 __doPostBack을 호출합니다. __doPostBack 후 나는 즉시 PopulateImage()를 호출하면 (PopulateImage()가 호출되지만 이미지는 잠시 동안 나타납니다,하지만이 사라지면, 불을 지르고에서 볼 수의) 이미지가 비어

<script src="jquery-1.5.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    window.pageLoad = function() { 
     $addHandler($get('btn1'), 'click', function (e) { 
      __doPostBack('pbcTest', ''); 
      // setTimeout("PopulateImage()", 100); 
      PopulateImage(); 
      $find('<%=mpePopup.ClientID%>').show(); 
      e.preventDefault(); 
     }); 
    } 

    function PopulateImage() { 
     $(".testImage").attr("src", "6.jpg"); 
    } 

</script> 

<ajaxtoolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" CombineScripts="false"> 
    </ajaxtoolkit:ToolkitScriptManager> 
    <button id="btn1"> Click</button> 
    <asp:LinkButton ID="lbTest" runat="server" Text="show popup" Style="display: none;" /> 
    <ajaxtoolkit:ModalPopupExtender runat="server" ID="mpePopup" TargetControlID="lbTest" 
     PopupControlID="pnlPopup" BackgroundCssClass="modalBackground" CancelControlID="lbClose" /> 
    <asp:Panel runat="server" ID="pnlPopup" CssClass="modalPopup"> 
     <asp:LinkButton runat="server" ID="lbClose">Close</asp:LinkButton> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
      <ContentTemplate> 
       <asp:MultiView runat="server" ID="mvPopup"> 
        <asp:View ID="View1" runat="server"> 
         <img class="testImage" /> 
        </asp:View> 
       </asp:MultiView> 
       <cs:PostBackControl runat="server" ID="pbcTest" OnCallBack="pbcTest_CallBack" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </asp:Panel> 

protected void pbcTest_CallBack(object sender, CallBackEventArgs e) 
    { 
     mvPopup.ActiveViewIndex = 0; 
    } 

.

그러나 시간 제한을 넣으면 setTimeout("PopulateImage()", 100); 이미지가 나타납니다.

이러한 문제의 원인은 무엇입니까?

답변

0

UpdatePanel이 새로 고침을 완료 한 후에 항상 PopulateImage();을 호출하려면 UpdatePanel이로드 된 후에 실행할 함수를 등록해야합니다. 페이지가로드 될 때 자바 스크립트에서 다음을 수행하여 기능을 등록 할 수 있습니다 :

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_pageLoaded(PopulateImage); 

나는 당신이 그것을 대체 귀하의 PopulateImage() 코드가 실행 된 후 UpdatePanel 새로 고침이 일어나고 동기화 문제가 발생 될 수있다 생각합니다.

+0

고맙습니다. 나는 당신이 옳다고 생각합니다. 사실 저는 Sys.WebForms.PageRequestManager.getInstance()를 추가했습니다. add_endRequest (EndRequestHandler); 그리고 그것은 잘 작동합니다. – Elistan

관련 문제