为什么我在 SharePoint 中关闭模式对话框时无法重定向到另一个 URL?
Why I can't redirect to another URL when I close a modal dialog in SharePoint?
SharePoint 中的新功能,我在 SharePoint 2013 中实现特定模式对话框行为时遇到以下问题。
我有以下情况。在一个 Web 部件中,我将另一个 Web 部件打开到模式对话框中(这不是问题)。然后,当模式对话框关闭时,我必须将父页面(而不是关闭的对话框)刷新到另一个 Web 部件中。我正在尝试通过 JavaScript 以这种方式实现此行为:
string javascript = "function openEdit(link) {" +
"var options = {" +
"url: link," +
"dialogReturnValueCallback: Callback" +
"};" +
"SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);" +
"}" +
"function Callback(dialogResult, ret) {" +
"alert('TEST');" +
"window.frameElement.commitPopup();" +
//"window.location.replace(\"" + linkRed + "\");" +
"window.parent.location.herf = 'http://www.google.com'" +
"}" +
"openEdit(\"" + linkPrint + "\");";
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "CallJS", javascript, true);
如你所见,在我的父webpart中我使用openEdit() JS函数来打开link(由[=的值表示) 22=]link打印 字符串变量(有效)。
我还声明了 回调 函数,当我的模态对话框关闭时调用该函数。它正确地进入了这个 Callback() 函数(我看到它是因为我放置了 alert())但是我希望被重定向到 google.com (或 URL 在另一个 Web 部件上更改此值)但它不起作用。它正在从我打开模式对话框的地方重定向和刷新父页面 window。
为什么?怎么了?我错过了什么?我该如何解决这个问题?
修改代码如下。注意:在您的代码中将“herf”替换为“href”并使用window.location.href重定向其他页面。
var linkPrint = "http://sp2013/sites/team/Lists/Test/EditForm.aspx?ID=1";
string javascript = "function openEdit(link) {" +
"var options = {" +
"url: link," +
"dialogReturnValueCallback: Callback" +
"};" +
"SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);" +
"}" +
"function Callback(dialogResult, ret) {" +
"alert('TEST');" +
"window.location.href= 'http://www.google.com';" +
"}" +
"openEdit(\"" + linkPrint + "\");";
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "CallJS", javascript, true);
SharePoint 中的新功能,我在 SharePoint 2013 中实现特定模式对话框行为时遇到以下问题。
我有以下情况。在一个 Web 部件中,我将另一个 Web 部件打开到模式对话框中(这不是问题)。然后,当模式对话框关闭时,我必须将父页面(而不是关闭的对话框)刷新到另一个 Web 部件中。我正在尝试通过 JavaScript 以这种方式实现此行为:
string javascript = "function openEdit(link) {" +
"var options = {" +
"url: link," +
"dialogReturnValueCallback: Callback" +
"};" +
"SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);" +
"}" +
"function Callback(dialogResult, ret) {" +
"alert('TEST');" +
"window.frameElement.commitPopup();" +
//"window.location.replace(\"" + linkRed + "\");" +
"window.parent.location.herf = 'http://www.google.com'" +
"}" +
"openEdit(\"" + linkPrint + "\");";
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "CallJS", javascript, true);
如你所见,在我的父webpart中我使用openEdit() JS函数来打开link(由[=的值表示) 22=]link打印 字符串变量(有效)。
我还声明了 回调 函数,当我的模态对话框关闭时调用该函数。它正确地进入了这个 Callback() 函数(我看到它是因为我放置了 alert())但是我希望被重定向到 google.com (或 URL 在另一个 Web 部件上更改此值)但它不起作用。它正在从我打开模式对话框的地方重定向和刷新父页面 window。
为什么?怎么了?我错过了什么?我该如何解决这个问题?
修改代码如下。注意:在您的代码中将“herf”替换为“href”并使用window.location.href重定向其他页面。
var linkPrint = "http://sp2013/sites/team/Lists/Test/EditForm.aspx?ID=1";
string javascript = "function openEdit(link) {" +
"var options = {" +
"url: link," +
"dialogReturnValueCallback: Callback" +
"};" +
"SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);" +
"}" +
"function Callback(dialogResult, ret) {" +
"alert('TEST');" +
"window.location.href= 'http://www.google.com';" +
"}" +
"openEdit(\"" + linkPrint + "\");";
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "CallJS", javascript, true);