2012-01-24 5 views
1

마스터 페이지에서 실행되는 Javascript 함수를 작성하여 contenct 페이지에서 ModalPopup을 찾고 닫아야합니다. 다음 코드는 작동하지만 원하는 것은 아닙니다. mpeEditUser.ClientID와 같은 것을 사용해야하지만 오류가 있습니다. 또한, ModalPopup의 id를 알지 못하고 그 타입 (ModalPopupExtender) 대신 ModalPopup을 찾을 수 있다면 좋을 것입니다. 어떠한 제안?JavaScript에서 ModalPopupExtender를 찾는 방법은 무엇입니까?

function CloseModalPopup() { 
     var mpu = $find('ctl00_ContentPlaceHolder1_mpeEditUser'); 
     mpu.hide(); 

    } 

여기 내 솔루션입니다 : (당신이 어떤 문제를 볼 경우 알려 주시기 바랍니다 감사합니다.) 내가 코드 숨김에서 ModalPopup ID를 얻을, 내 자바 스크립트 함수에 전달합니다. 내 자바 스크립트 기능에서

ContentPlaceHolder cph = (ContentPlaceHolder)FindControl("ContentPlaceHolder1"); 
string sMpeID = (AjaxControlToolkit.ModalPopupExtender)cph.FindControl("mpeEditUser"); 

: 다음 default.master.cs의를 Page_Load에서

가능성이 태그가 다른 페이지를 통해 호출되는 의해 청소 만 점점

var mpe = $find('<%=sMpeID%>'); 
if (mpe != null) { 
      mpe.hide(); 
} 
+0

"* ...하지만 오류가 있습니다. *"- 얼마나 재미 있어요. 오류가 무엇인지 공유하려면 어떻게해야합니까? =) – jadarnel27

+0

죄송합니다. 내 질문을 업데이트했습니다. 기본적으로 나는 erro있어 CS0103 : 이름 'mpeEditUser'는 현재 컨텍스트에 존재하지 않습니다. – GLP

답변

0

그것의,이 나에게 발생했던 일. 난 당신을 위해 최선의 해결책을 모르지만, 내가 문제를 해결하는 방법은 먼저 페이지의 모든 요소에서 막연한 일치를 찾는 javascript 함수를 통해 mpe를 찾는 것이 었습니다.

var elemets = document.getElementsByTagName("*"); 
var mpe; 
for (var i = 0; i < elemets.length; i++) { 
    var id = elemets[i].id 
    if (id.indexOf("mpe") >= 0) { 
     mpe = elemets[i]; 
    } 
} 

페이지에 하나 이상의 mpe가있는 경우 문자열이 더 많은 경우 일치시킬 수 있습니다. 나를 위해 요소 함수는 약 50 요소를 반환하므로 너무 많은 오버 헤드가되지 않았습니다. 그것은 당신에게 해당하지 않을 수도 있지만 최종 제품에서이 기능을 사용하지 않아도 엘레멘트의 실제 ID를 발견하는 데 도움이됩니다.

관련 문제