Solved

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

Posted on 2011-09-27
8
2,358 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
Office 365 Training for IT Pros

Learn how to provision tenants, synchronize on-premise Active Directory, implement Single Sign-On, customize Office deployment, and protect your organization with eDiscovery and DLP policies.  Only from Platform Scholar.

 

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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

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

Suggested Solutions

Pimping Sharepoint 2007 without Server-Side Code Part 1 One of my biggest frustrations with Sharepoint 2007 in the corporate world is that while good-intentioned managers lock down the more interesting capabilities of Sharepoint programming in…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …

752 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