본문 바로가기
IT-개발,DB

[개발] 자바스크립트, 자식창에서 부모창의 이벤트 실행하기

by SB리치퍼슨 2010. 11. 19.

자바스크립트 개발에서 자식창에서 부모창이 갖고 있는 이벤트를 실행하는 방법입니다.

-----------------------------------

자식창에 있는 값을 부모창에 바로 반영하고 싶을 경우
보통 스트립트로 자식창의 값을 부모창에 넘긴다음
부모창의 변경된 내용을 submit시킴으로써 일괄적으로 처리합니다.

하지만 가끔 자식창에서 부모창으로 값을 넘기면서 바로 DB처리를 해야 할 경우가 있을지도 모릅니다. 그럴때 이용하는 방법입니다.

다음은 자식창에서 입력한 텍스트값을 부모창의 링크버튼 이벤트를 이용하여
부모창의 리스트박스에 추가하는 소스로 두가지 방법을 사용해서 만들어 보았습니다.

자세한 내용은 첨부한 소스코드를 참고하세요.

 

--- 아래는 팝업페이지의 소스코드 일부입니다..

 

  <script language="javascript">
  <!--
   // __doPostBack에 인지값을 직접 넘기는 방법
   function ListBoxAdd1()
   {
    var strValue = document.all["txtValue"].value;
    opener.__doPostBack('lnkEvent1', strValue);
   }
   
   // 부모창의 hidden input 으로 넘겨서 받는 방법
   function ListBoxAdd2()
   {
    opener.document.all["hidValue"].value = document.all["txtValue"].value;
    opener.__doPostBack('lnkEvent2', '');
   }
  //-->
  </script>

 

   <INPUT type="text" id="txtValue">
   <INPUT type="button" value="추가(방법1)" onclick="ListBoxAdd1();">
   <INPUT type="button" value="추가(방법2)" onclick="ListBoxAdd2();">

 

-- 아래는 부모창의 소스코드 일부입니다.

-- 자식창에서 __doPostBack을 사용하시려면 링크버튼을 이용하시는게 편리합니다.

-- 링크버튼을 사용하시면  컴파일후 부모창에  __doPostBack 스크립트 함수를 자동으로 생성해주기 때문이죠.

 

<aspx>

    <asp:ListBox id="ListBox1" runat="server">
     <asp:ListItem Value="선택하세요">값을 추가해주세요.</asp:ListItem>
    </asp:ListBox>

 

    <asp:LinkButton id="lnkEvent1" runat="server"></asp:LinkButton>
    <asp:LinkButton id="lnkEvent2" runat="server"></asp:LinkButton>
   <input type="hidden" id="hidValue">

 

<cs>

        // RaisePostBackEvent를 이용해서 인자값 받기

        string newValue = null;
        protected override void RaisePostBackEvent

                (IPostBackEventHandler sourceControl, string eventArgument)
        {
                newValue = eventArgument;
                base.RaisePostBackEvent (sourceControl, eventArgument);
        }
        private void lnkEvent1_Click(object sender, System.EventArgs e)
        {
                if(newValue != null)
                         ListBox1.Items.Add(newValue );
        }

 

        // hidden값에 인자값을 넣어서 받기

        private void lnkEvent2_Click(object sender, System.EventArgs e)
        {
                if(Request["hidValue"] != null)
                        ListBox1.Items.Add(Request["hidValue"]);               
        }


출처 : http://blog.naver.com/tear230/100012963979

반응형

댓글