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

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
paeepAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
paeepConnect With a Mentor Author Commented:
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
 
dexterrajeshCommented:
0
 
paeepAuthor Commented:
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
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
Easwaran ParamasivamCommented:
Instead of SP.UI.ModalDialog.close() method try window.close()
0
 
paeepAuthor Commented:
That was the initial setup.
Doesn't work either...
0
 
paeepAuthor Commented:
final solution
0
 
paeepAuthor Commented:
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
All Courses

From novice to tech pro — start learning today.