2

我在 Aspx 页面上有一个项目列表,为了编辑每个项目,我启动了 SP.UI.ModalDialog 弹出窗口来执行此操作,在此弹出窗口中创建了一个提交按钮以保存更改,然后关闭弹出窗口:

protected void Submit_onclick(Object sender, EventArgs e)
{
    SPSecurity.RunWithElevatedPrivileges(delegate
    {
        try
        {
            using (SPSite mySite = new SPSite(PGContext.Site.ID))
            {
                using (SPWeb myweb = mySite.OpenWeb(PGContext.Web.ID))
                {
                    myweb.AllowUnsafeUpdates = true;
                    //changes
                    myweb.AllowUnsafeUpdates = false;

                    Page.ClientScript.RegisterStartupScript(this.GetType(), "closeWindow", "window.close()", true);}
                }
            }
            catch (Exception exp)
            {
                throw new Exception("ERROR: Unable to Save Changes : " + exp.Message.ToString(), exp);
            }
        });
}

但是 Page.ClientScript.RegisterStartupScript() 似乎不起作用!我在 msdn 上看过它,它说我只能在 Page_Load() 函数上使用它,那么如何在事件中从代码中关闭我的弹出窗口?

4

3 回答 3

4

试试这个 :

Response.Write("<script type='text/javascript'>window.frameElement.commitPopup();</script>");
Response.Flush();
Response.End();
于 2012-11-23T09:59:56.493 回答
0

尝试

this.Context.Response.Write("<script type='text/javascript'>parent.location.reload();</script>");

这就是我在代码中用来关闭模态对话框并刷新主页以显示所做更新的内容

于 2012-11-23T10:04:02.833 回答
-1

上面的代码工作正常。它运行良好。但是要刷新父页面,请使用以下代码来关闭弹出窗口并显示加载消息。

using (SPLongOperation operation = new SPLongOperation(this.Page)) {

   operation.Begin();

   //DO WORK HERE

   string redirectUrl = 'http://where-to-redirect-user-after';
     operation.End(redirectUrl, SPRedirectFlags.DoNotEncodeUrl, HttpContext.Current, null);
}
于 2015-06-18T10:40:20.863 回答