Sharepoint 2013模态对话框未加载

时间:2014-12-03 14:55:07

标签: sharepoint-2013

您好我有一个简单的页面上传到SharePoint页面库并尝试模拟长时间运行操作,没有关闭等待对话框。 以下是我所拥有的脚本

<script type="text/javascript">
    var waitDialog = null;
    function DoWork() {
        toggleProcessingStatus(true);
        UpdateUI();
        toggleProcessingStatus(false);
    }
    function UpdateUI()
    {
        var lblControl = document.getElementById("lbl");
        for (i = 0; i < 20000; i++) 
        {            
            lblControl.innerText = lblControl.innerText + i;
        }
    }
    function toggleProcessingStatus(showStatus) {
        if (showStatus) {
            ExecuteOrDelayUntilScriptLoaded(ShowWaitDialog, "sp.js");
        }
        else {
            if (waitDialog != null) {
                //setTimeout(CloseWaitDialog, 5000);
                CloseWaitDialog();
            }
        }
    }
    function ShowWaitDialog() {
        waitDialog = SP.UI.ModalDialog.showWaitScreenWithNoClose('Updating...', 'Please wait while update completes...', 150, 330);
    }

    function CloseWaitDialog() {
        if (waitDialog != null) {
            waitDialog.close();
        }
    }
</script>
<input type="button" id="btnShowDialog" title="Do Long Running Work" name="Do Long Running Work" onclick="javascript: DoWork();" value="Do Long Running Work"/>
Label: <label id="lbl" title="Test">Test Wait Screen</label>

非常感谢任何帮助。

谢谢, Mallikarjun

4 个答案:

答案 0 :(得分:0)

尝试ExecuteOrDelayUntilScriptLoaded(ShowWaitDialog,“sp.ui.js”);

答案 1 :(得分:0)

&#34; sp.ui.dialog.js&#34;必须加载。

我已将下面的代码添加到我想要打开对话框的curent页面。

答案 2 :(得分:0)

与上述其他答案一样,您需要确保加载脚本sp.ui.dialog.js脚本。您可以使用类似于下面的代码

执行此操作
SP.SOD.executeOrDelayUntilScriptLoaded(function () {
    SP.UI.ModalDialog.showModalDialog(options);
}, "sp.ui.dialog.js");
//ensure script is loaded
SP.SOD.executeFunc("sp.ui.dialog.js", null, null);

在此模式中包含executeOrDelayUntilScriptLoaded executeFunc可确保以下内容:

  • executeOrDelayUntilScriptLoaded - 等到执行封闭代码之前加载sp.ui.dialog
  • executeFunc - 确保加载了sp.ui.dialog,如果它尚未被页面请求

答案 3 :(得分:0)

尝试_spBodyOnLoadFunctionNames.push('functionName');

在你的情况下

if (showStatus) { _spBodyOnLoadFunctionNames.push(ShowWaitDialog); }