JavaScript的ShowModalDialog没有从ASP代码关闭并打开同一页面的新弹出窗口

时间:2012-07-10 14:26:31

标签: c# javascript asp.net

我从javascript的window.showModalDialog打开一个网页(Clock.aspx)。在Clock.aspx我有一个按钮,我希望当用户点击该按钮时,Clock.aspx页面将被关闭。我不想使用javascript的onClientClick()方法,因为一些服务器端数据库插入正在进行,插入后我想关闭此页面。

按钮后面的代码如下: -

protected void btnStop_Click(object sender, EventArgs e)
    {
        _nonProduction = new NonProduction();
        if (Session["LastNonProdTimeID"] == null)
        {
        }
        else
        {
            int NonProdTimeEntryID = Convert.ToInt32(Session["LastNonProdTimeID"]);
            //Updating the TimeSpent
            isTimeSpentUpdated = _nonProduction.UpdateTimeSpentInDB(NonProdTimeEntryID);
            if (isTimeSpentUpdated == true)
            {

                string timespent = Convert.ToString(_nonProduction.GetTimeSpent(NonProdTimeEntryID));
                string msg = "Total time consumed  in " +HiddenTaskname.Value.ToString()+": " + timespent.ToString() + " Minutes";
                ClientScript.RegisterStartupScript(typeof(Page), "closePage", "<script type='text/JavaScript'>window.close();</script>");

                //ShowPopUpMsg(msg);
            }
            else
            {
            }
        }



    }

这时当我点击按钮时,会弹出另一个(Clock.aspx)弹出窗口并且窗口没有关闭。请帮助我如何从服务器端代码关闭ShowModalDialog。我也在我的页面中使用脚本管理器。 提前致谢。

3 个答案:

答案 0 :(得分:1)

我已将<base target="_self">添加到clock.aspx页面的head部分,然后它适用于我。

答案 1 :(得分:0)

对于我的,我在普通的javascript中有一个函数可以关闭aspx中的页面。

在后面的代码中,如果更新成功,则会调用该函数。

// this function is to be called by the popup windows to refresh the opener using specific office code, and close self
function allDoneOffice(office)
{
    var opener = self.opener;
    if (opener.doRefresh) opener.doRefreshWithOfficeCode(office);
    window.open('','_self','');  // IE warning hack
    self.close();
}


        // update the record
    bool b = report.SaveModifiedToDB();
    if (b)
    {
        // don't close the page if nothing was updated
        ClientScript.RegisterStartupScript(this.GetType(), "load", "<script type=\"text/javascript\">\n" +
        "allDoneOffice('" + report.OfficeCode + "');" + "<" + "/script>");
    }
    else
    {
        lblResults.Text += " Unable to save modified report to the database.";
    }

答案 2 :(得分:0)

使用以下代码可以在IE中使用

Response.Write("<script language='javascript'> { self.close() }</script>");