从后面的代码关闭SP.UI.ModalDialog PopUp

时间:2012-11-23 09:53:08

标签: javascript asp.net sharepoint modal-dialog window.closed

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

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()函数上使用它,那么如何从事件中的代码中关闭弹出窗口呢?

3 个答案:

答案 0 :(得分:4)

试试这个:

Response.Write("<script type='text/javascript'>window.frameElement.commitPopup();</script>");
Response.Flush();
Response.End();

答案 1 :(得分:0)

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

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

答案 2 :(得分:-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);
}