window.showModalDialog and ASP.NET

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I'm not quite sure if the problem I'm having is a restriction of
showModalDialog or if there is a way around it.

The web app I am working requires the user to select a record from a list.
I pop this list (generated by a second page) in a second window. When the
user selects a record on the datagrid, I close the second window and submit
the calling page.

If I try to use showModalDialog, the dialog pops up just fine and everything
is rendered correctly. However, as soon as the page posts back a new browser
window is opened with what appears to be the response for the post back.

Is there a way around this behavior?
 
This is done by design. Soon you gonna discover that JScript window.history
doesn't exist in modal dialog, too :)
The only way around this prob is to place iFrame inside of a simple static
html page and make the source of that iframe your aspx page. Then it'll post
correctly.

For example:

Simple HTML page - /SIMPLE_HTML_PAGE.html:

<html>
<head>
<script language="javascript">
function InitFrame(){document.all.frContainer.src =
window.dialogArguments;}
</script>
</head>
<body onload="InitFrame();">
<iframe id="frContainer" frameborder="0" height="100%"
width="100%"></iframe>
</body>
</html>


JScript function (simplified) on your "base" page which has "onclick" to
open modal dialog:

function openDamnDialog(url)
{
var returnedValue =
window.showModalDialog("/SIMPLE_HTML_PAGE.html","/URL_OF_ASPX_PAGE_THAT_NEEDS_TO_USE_DIALOG.aspx","help:no;dialogWidth:500px;dialogHeight:400px;resizable:yes;status:no;scroll:no;"));
if(returnedValue)
{
doSomethig();
//Submit the page if you want
formBlah.submit();
}
}


Call this JScript method from your "base" page. Implement some JScript
return value on your aspx list, if you need to. Basically, there is nothing
difficult about this.

Regards,
Kikoz
 
Back
Top