2014-09-23 2 views
0

페이지 (ABC.aspx)에서 단추를 클릭 할 때 모달 창을 열려고합니다. 코드는 다음과 같습니다팝업 창에서 상위 창으로 데이터를 전달하고 ASP.NET의 마스터 페이지에서 자바 스크립트가 작동하지 않습니다.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterStartupScript(this, this.GetType(), "ffff","myFunction();", true); 
} 

이 메서드는 자바 스크립트 함수 myFunction()을 호출합니다. 이 자바 스크립트 코드는 Site.master 파일에 있습니다. 코드는 다음과 같습니다

<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 

    function myFunction() { 
     var myWindow = 
      window.showModalDialog("XYModalWindow.aspx", object, "width=100, height=50"); 
    } 

    </script> 
    <link href="~/SomeStyleSheet.css" type="text/css" rel="Stylesheet" /> 
    <asp:ContentPlaceHolder ID="HeadContent" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 

이 자바 스크립트 코드는 데이터베이스에 몇 개의 레코드를 저장하고 있습니다.

목표 : 팝업 창에서 데이터베이스에 데이터를 저장 한 후 상위 창 (예 : ABS.aspx)에 데이터를 채워야합니다.

문제점 : 내 자바 스크립트가 마스터 페이지에 있기 때문에 인터넷의 여러 페이지에서 언급 한 것처럼 부모 페이지의 데이터를 팝업 창에서 전달할 수 없습니다.

팝업 창에서 세션 변수에 데이터를 저장하고 부모 창에서 액세스를 시도했지만 작동하지 않는 것 같습니다.

참고 : 추가 이벤트를 사용하지 않고 상위 창에서 데이터를 자동으로 가져 오려고합니다. 팝업 창 데이터가 저장되고 창이 닫히면 부모 창에 해당 데이터가 자동으로 표시됩니다 (추가 버튼 클릭 없음).

답변

0

먼저 클라이언트 측 코드를 호출하는 서버 측 버튼이 있습니다. 필요한가? 왜 웹 서비스를 사용하여 데이터베이스에 저장 한 다음 onSuccess 콜백 함수에서 페이지의 표시를 업데이트하지 않습니까? 다시 게시가 필요 없으며 코드 숨김 이벤트 처리기에서 클라이언트 측 코드를 호출하는 것에 대해 걱정할 필요가 없습니다.

팝업 창에 필요한 입력란을 사용해보십시오. 스타일을 "display : none"으로 설정하십시오. 예를 들어 버튼과 텍스트 상자가있는 숨겨진 필드가 있습니다.

그런 다음 해당 div를 표시하는 이벤트 핸들러를 만듭니다. 누군가가 특정 버튼을 클릭하면 해당 div를 jQuery로 대화 상자로 변환하여 표시합니다. 그런 다음 누군가가 대화 상자 안의 버튼을 클릭하면 웹 서비스를 호출하여 데이터베이스를 업데이트 한 다음 적절하게 페이지를 업데이트 할 수 있습니다 (예를 들어 성공한 ​​경우 X, 실패한 경우 Y 등). 필드는로드 할 때 페이지의 일부이므로 ID를 가지며 데이터로 원하는 모든 것을 할 수 있습니다.

Jquery 대화 상자 문서 : http://jqueryui.com/dialog/