我在我的Web部件(SharePoint 2010)的javascript函数中调用SP.UI.ModalDialog.showModalDialog(),但对话框显示一秒钟,然后自行关闭。
最初,我想调用一个sharepoint页面(在Layouts文件夹中),但我正在测试一个简单的对话框,以确保它在我的sharepoint页面中不是错误。
在Web部件中,我有一个表,其中每个第一个单元格行是LinkButton。我已将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()而不是在LinkButton客户端事件中工作。
任何想法如何解决这个非常讨厌的行为? THX
答案 0 :(得分:1)
可能发生的事情是linkbutton执行回发以便页面重新加载,导致对话框消失尝试使用简单的锚标记。