No se puede hacer funcionar un modal SP2010 básico

Estoy migrando un proyecto de SP2007 a SP2010. Quiero que funcione una ventana emergente modal para abrir la ventana Nuevo elemento de una lista desde una página aspx. No puedo hacer que el modal funcione en el ejemplo más básico, y no puedo entender qué está pasando.

Sigo recibiendo el siguiente error si utilizo las herramientas de desarrollo y habilito la depuración de secuencias de comandos:

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

Aquí hay un fragmento de código:

<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>

Sigo pensando que el problema está relacionado con SP.UI.Dialog.js, pero mi referencia es correcta y no puedo entender por qué no funciona. Esto me está volviendo loco. ¿Alguna pista de lo que estoy haciendo mal?

preguntado el 29 de agosto de 12 a las 15:08

¿has publicado esta pregunta en el sharepoint.stackexchange.com? -

Buena idea. Acabo de hacerlo aquí: sharepoint.stackexchange.com/questions/44548/… -

¿Verás? Su pregunta ya obtuvo más tracción en ese sitio comunitario específico. -

Gracias por el consejo. ¡Ahora solo necesito encontrar la respuesta! -

2 Respuestas

Estuve trabajando en algo similar recientemente, así que para aclarar el código aún más, intente con el siguiente enfoque:

    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');

Espero que ayude.

Respondido 30 ago 12, 10:08

Yo también lo he probado así. El problema tiene que estar relacionado con no incluir las bibliotecas correctas o algo así. Sé que mi guión es correcto. Simplemente no puedo averiguar qué bibliotecas me faltan y por qué no están ya incluidas, ya que esta es una página de SharePoint. - Craig

El problema era una condición de carrera que no se resolvió poniendo la llamada al método en $(document).ready, que había intentado antes (no estoy seguro de por qué no lo tenía en este ejemplo).

Estaba tratando de hacer un modal simple, pero lo hice demasiado simple. Intentar abrir un modal inmediatamente cuando se abrió la página no funcionó. Mover exactamente la misma llamada de método a un botón funcionó bien. Ninguno de los Scriptlinks fue necesario. SharePoint ya proporcionó todas las bibliotecas jquery en la página.

Sabía que sería algo estúpido. Gracias Vardhaman, por guiarme en la dirección correcta.

Además, la respuesta de Vardhaman aquí funcionó: https://sharepoint.stackexchange.com/questions/44548/cant-get-a-basic-modal-to-work-on-2010/44687#comment41263_44687

ExecuteOrDelayUntilScriptLoaded(función(){

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

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

Respondido 13 Abr '17, 13:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.