无法阻止在SharePoint Web部件中关闭ModalDialog

时间:2012-02-17 14:20:39

标签: sharepoint web-parts modal-dialog

我在我的Web部件(SharePoint 2010)的javascript函数中调用SP.UI.ModalDialog.showModalDialog(),但对话框显示一秒钟,然后自行关闭。
最初,我想调用一个sharepoint页面(在Layouts文件夹中),但我正在测试一个简单的对话框,以确保它在我的sharepoint页面中不是错误。

在Web部件中,我有一个表,其中每个第一个单元格行是LinkBut​​ton。我已将OnClientClick设置为调用javascript函数:

linkButton.OnClientClick = string.Format("OpenNotationCurveDialog('{0}');",
                    notation.code);

在Web部件ASCX的脚本块中,我有:

function OpenNotationCurveDialog(notationCode) {

    var htmlElement = document.createElement('p');

    var helloWorldNode = document.createTextNode('Hello world!');
    htmlElement.appendChild(helloWorldNode);

    var options = {

        title: "Add item",
        allowMaximize: true,
        showClose: true,
        width: 800,
        height: 600,
        html: htmlElement,
        dialogReturnValueCallback: CurveDialog_ClosedCallback

    };

    SP.UI.ModalDialog.showModalDialog(options);

    return false;
}

function CurveDialog_ClosedCallback(result, value) {
    console.log('!! CurveDialog_ClosedCallback !!');
}

永远不会调用函数CurveDialog_ClosedCallback。 在同一个Web部件中,我在Web部件菜单中添加了一个元素,该菜单调用了javascript函数SP.UI.ModalDialog.showModalDialog():它工作正常。我不明白为什么它从菜单调用showModalDialog()而不是在LinkBut​​ton客户端事件中工作。

任何想法如何解决这个非常讨厌的行为? THX

1 个答案:

答案 0 :(得分:1)

可能发生的事情是linkbutton执行回发以便页面重新加载,导致对话框消失尝试使用简单的锚标记。