Solved

How to close a modalDialog from a webpart page in Sharepoint 2010

Posted on 2011-09-27
8
2,348 Views
Last Modified: 2012-05-12
Hello all,

In sharepoint (2010 foundation) I am trying to use the SP.UI.ModalDialog.showModalDialog function to open a webpart page.
(and it succeeds!!)
However: closing the modalDialog fails. It seems I am closing the webpart page displayed inside de modalDialog but the dialog itself stays open.
The webpart used is a SmartPart, which reads the contents of an aspx file from the server.

This is the code I use to open the dialog:
<script language='text/javascript'>
function UurRegistratieWBS(LineNr, lblAfk, projectNr, BudgetCode) {
            
        var options = SP.UI.$create_DialogOptions();
        options.url = '/ERP/SitePages/UurRegistratie.aspx?wbsnr=' + LineNr + '&user=' + lblAfk + '&project=' + projectNr + '&BudgetCode=' + BudgetCode;
        options.title = "Tijdsregistratie WBS";
        options.showClose = true;
        options.autoSize = true;
        options.dialogReturnValueCallback = Function.createDelegate(null, CloseDialog);

         SP.UI.ModalDialog.showModalDialog(options);
      }
   </script>

Open in new window


...And below is the code I (try to) use in the webpart page :
 
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSluiten.Click

    Me.Response.Write("<script language='text/javascript'>SP.UI.ModalDialog.close(SP.UI.DialogResult.cancel);</script>")
    Me.Parent.Page.Response.Clear()
    Me.Parent.Page.Response.Write("<script language='text/javascript'>SP.UI.ModalDialog.close(SP.UI.DialogResult.cancel);</script>")
  End Sub

Open in new window


As said earlier: the webpart page itself is closed, but the dialogbox stays open and has to be closed manually.
Can someone help me with this?

Thanks,

    Paul
0
Comment
Question by:paeep
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 2
8 Comments
 
LVL 9

Expert Comment

by:dexterrajesh
ID: 36708788
0
 

Author Comment

by:paeep
ID: 36708988
Hey,

I already tried that kind of code (it's all over the internet ;-) )

Could there be a possibility that my modalDialog is opened twice?
--> after I 'close' the dialog, it seems to grow a little in size (as in a default modal popup dialog)

However, I only get 1 result from the callback function.
0
 
LVL 16

Expert Comment

by:Easwaran Paramasivam
ID: 36709093
Instead of SP.UI.ModalDialog.close() method try window.close()
0
Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

 

Author Comment

by:paeep
ID: 36709124
That was the initial setup.
Doesn't work either...
0
 

Accepted Solution

by:
paeep earned 0 total points
ID: 36715506
I found the solution myself:

Page.Response.Clear()
Page.Response.Write("<script type='text/javascript'>window.frameElement.commonModalDialogClose(1, 'registratie');</script>")
Page.Response.End()
Page.Response.Flush()

Open in new window


The window.frameElement does the job. Don't know why.
I tried it with IE8 / IE9 / chrome and it all works, whereas the previous 'solutions' did not.

If someone can clarify this, I'd be happy to read it :-)
0
 
LVL 16

Expert Comment

by:Easwaran Paramasivam
ID: 36715548
0
 

Author Closing Comment

by:paeep
ID: 36902120
final solution
0
 

Author Comment

by:paeep
ID: 36715924
I found what I needed explicitly through one of your links:
http://blogs.msdn.com/b/sharepointdev/archive/2011/01/13/using-the-dialog-platform.aspx

Methods Inside a Dialog

When you’re inside a dialog, there are alternate methods to operate on the dialog. The APIs are created dynamically to increase performance and keep from loading the entire SP.UI.Dialog.js file since it is loaded in the parent window. The following methods and properties are available using the window.frameElement class.
...

Thanks!!
0

Featured Post

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project

735 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question