2012-08-29 2 views
1

SP2007에서 SP2010으로 프로젝트를 마이그레이션하려고합니다. aspx 페이지에서 목록의 새 항목 창을 열려면 모달 팝업을 얻고 싶습니다. 가장 기본적인 예제에서 모달을 작동시키지 못하고, 무슨 일이 일어나는지 알 수 없습니다. 나는 문제가 SP와 관련이 있다는 생각을 계속기본 SP2010 모달을 사용할 수 없습니다.

<SharePoint:ScriptLink ID="ScriptLink3" Language="javascript" Name="../ProjectFolder/jquery/jquery-1.7.2.min.js" Defer="false" runat="server" /> 
<SharePoint:ScriptLink ID="ScriptLink1" Language="javascript" Name="../ProjectFolder/jquery/jquery-ui-1.8.12.custom.min.js" Defer="false" runat="server" /> 
<SharePoint:ScriptLink ID="ScriptLink4" Language="javascript" Name="../MicrosoftAjax.js" Defer="false" runat="server" /> 
<SharePoint:ScriptLink ID="ScriptLink5" Language="javascript" Name="../SP.debug.js" Defer="false" runat="server" /> 
<SharePoint:ScriptLink ID="ScriptLink6" Language="javascript" Name="../SP.UI.Dialog.js" Defer="false" runat="server" /> 
<script type="text/javascript"> 
    function OpenInDialog(title, url) { 
     var options = SP.UI.$create_DialogOptions(); 
     options.title = title; 
     options.width = 680; 
     options.height = 500; 
     options.url = url; 
     options.dialogReturnValueCallback = Function.createDelegate(null, ConfirmationCallback); 
     SP.UI.ModalDialog.showModalDialog(options); 
    } 

    function ConfirmationCallback(dialogResult, returnValue) { 
     if (dialogResult == SP.UI.DialogResult.OK) { 

     } 
    } 


    OpenInDialog('test', 'http://portal.dev.loc/sites/TestSite/_layouts/Test.aspx'); 

</script> 

: 여기

SCRIPT5022: Sys.ArgumentTypeException: Object of type 'SP.UI.ApplicationPages.CalendarSelector' cannot be converted to type 'Sys.IDisposable'. 

는 코드입니다 :

나는 스크립트 디버깅 내가 개발자 도구를 사용하는 경우 다음과 같은 오류가 유지 가능 .UI.Dialog.js,하지만 내 참조가 올바른지, 그리고 그것이 작동하지 않는 이유를 알아낼 수 없습니다. 이것은 나를 미치게합니다. 내가 잘못하고있는 어떤 단서?

+0

이 질문을 게시 한 적이 있습니까 http://sharepoint.stackexchange.com/? –

+1

좋은 아이디어. 그냥 여기에 : http://sharepoint.stackexchange.com/questions/44548/cant-get-a-basic-modal-to-work-on-2010 – Craig

+0

보시나요? 귀하의 질문은 이미 특정 커뮤니티 사이트에서 더 많은 관심을 얻었습니다. –

답변

0

문제는 이전에 시도한 $ (document) .ready에 메서드 호출을 넣음으로써 해결되지 않은 경쟁 조건이었습니다 (이 예제에서는 왜 그 이유가 없었는지 확실하지 않음).

나는 단순한 모달을하려고했지만 너무 단순하게 만들었습니다. 페이지가 열렸을 때 즉시 모달을 열려고했으나 작동하지 않았습니다. 버튼과 똑같은 메소드 호출을 움직이면 제대로 작동합니다. Scriptlink가 필요하지 않았습니다. 모든 jquery 라이브러리는 이미 SharePoint에서 페이지에 제공되었습니다.

나는 그것이 어리 석다는 것을 알았습니다. 저를 올바른 방향으로 이끌어 주신 Vardhaman에게 감사드립니다. 또한

, 여기 Vardhaman의 답변 일 : https://sharepoint.stackexchange.com/questions/44548/cant-get-a-basic-modal-to-work-on-2010/44687#comment41263_44687

ExecuteOrDelayUntilScriptLoaded (함수() {

OpenInDialog('test', 'http://portal.dev.loc/sites/TestSite/_layouts/Test.aspx'); 

}, "sp.ui.dialog.js");

1

내가 그렇게 더 많은 코드를 명확히하기 위해, 최근 비슷한 작업을 봤는데, 다음과 같은 접근 방식을 시도 :

function OpenInDialog(title, url) { 
      var options = { 
       title: title, 
       width: 680, 
       height: 500, 
       url: url, 
       dialogReturnValueCallback: ConfirmationCallback 
      }; 

      SP.UI.ModalDialog.showModalDialog(options); 
     } 

    function ConfirmationCallback(dialogResult, returnValue) { 
     if (dialogResult == SP.UI.DialogResult.OK) { 
      // TODO 
     } 
    } 

    OpenInDialog('test', 'http://portal.dev.loc/sites/TestSite/_layouts/Test.aspx'); 

는 희망이 도움이됩니다.

+0

나는 그 방법을 그렇게 시도했다. 문제는 올바른 라이브러리 등을 포함하지 않는 것과 관련이 있어야합니다. 나는 나의 대본이 정확하다는 것을 안다. SharePoint 페이지이므로 누락 된 라이브러리와 아직 포함되지 않은 라이브러리를 파악할 수 없습니다. – Craig

관련 문제