2010-06-14 4 views
0

내 asp.net 웹 응용 프로그램에서 단추가있는 팝업 창을 만듭니다. 해당 버튼을 클릭하면 부모 창에 포함 된 asp : TextBox (id = TextBox1)의 값을 설정하려고합니다. 그러나, 내가 읽은 모든 예제가 나타내는 것처럼 작동하지 않습니다. . 내 자바 스크립트 온 클릭 처리기에 다음 줄의 코드를 시도했습니다window.opener.document.getElementById not working

:

  1. window.opener.document.getElementById ('<퍼센트 = TextBox1.ClientID %>') 값 = "ABC" ;
  2. window.opener.document.getElementById ("TextBox1"). value = "abc";
  3. window.opener.document.getElementById ("ctl00_ContentPlaceHolder1_TextBox1"). value = "abc";

예제 3 만 작동합니다. 내가 읽은 모든 것들은 # 1이 선호되는 방법이라는 것을 나타내지 만, 전혀 작동하지 않는 것처럼 보입니다. 누구든지 내가 뭘 잘못하고 있는지 아이디어가 있습니까?

Firefox, Chrome 및 IE에서이 기능을 사용해 보았습니다.

감사합니다.

+0

나는 더 ASP 프로그래머는 아니지만, 당신의 팝업 페이지가 * 다른 * ASP 페이지 인 경우, 다음은'* 부모 * 페이지에서'TextBox1'에 관계없는 TextBox1'하지 않습니다? – Pointy

답변

4

이 JavaScript 라인은 팝업 윈도우의 마크 업에 포함되어 있습니까? 그렇다면 해당 서버 측 코드는 부모 창에 대한 서버 측 코드에 TextBox1이 있고 ClientID 속성을 확인할 수 없음을 인식하지 못합니다. 클라이언트 ID를 어떻게 든 팝업 창에 전달 (쿼리 문자열, 쿠키, 세션 등)하거나 하드 코딩해야합니다. 또는이 JavaScript 행을 부모 페이지의 함수에 넣은 다음 window.opener.functionName() 행을 따라 무언가를 호출 할 수도 있습니다.

4

팝업 코드를 호출 할 때 비트를 변경해야하는 경우 텍스트 클라이언트 ID를 전달해야하며 하드 코딩없이 팝업 페이지에서 해당 값을 설정할 수 있습니다. 여기 방법 :

var txtNameClientObject = '<%= txtName.ClientID %>'; 
window.open('Child.aspx?txtName='+txtNameClientObject); 

다음 팝업 페이지에서 당신이 당신을 위해 도움이 될 것입니다

opener.document.getElementById('<%= Request["txtName"] %>').value = 'from child'; 

희망으로 할 수 있습니다.

감사