1

プロジェクトをSP2007からSP2010に移行しています。モーダルポップアップを機能させて、aspxページからリストの[新しいアイテム]ウィンドウを開きたいです。最も基本的な例ではモーダルを機能させることができず、何が起こっているのか理解できません。

開発者ツールを使用してスクリプトデバッグを有効にすると、次のエラーが発生し続けます。

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

コードスニペットは次のとおりです。

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

問題はSP.UI.Dialog.jsに関連していると思い続けていますが、私の参照は正しく、なぜそれが機能しないのか理解できません。これは私を狂わせています。私が間違っていることの手がかりはありますか?

4

2 に答える 2

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

うまくいけば、それが役立ちます。

于 2012-08-30T09:33:20.303 に答える
0

問題は、以前に試した$(document).readyにメソッド呼び出しを入れても解決されなかった競合状態でした(この例でなぜそれがなかったのかわかりません)。

単純なモーダルを実行しようとしましたが、単純すぎました。ページを開いた直後にモーダルを開こうとしても機能しませんでした。まったく同じメソッド呼び出しをボタンに移動すると、正常に機能しました。スクリプトリンクは必要ありませんでした。すべてのjqueryライブラリは、SharePointによってページにすでに提供されています。

私はそれが愚かなことになるだろうと知っていました。私を正しい方向に導いてくれたVardhamanに感謝します。

また、ここでのVardhamanの回答は機能しました: https ://sharepoint.stackexchange.com/questions/44548/cant-get-a-basic-modal-to-work-on-2010/44687#comment41263_44687

ExecuteOrDelayUntilScriptLoaded(function(){

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

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

于 2012-08-31T15:52:44.647 に答える