ShowModalDialog effect in ASP.NET web forms






3.37/5 (13 votes)
How to open modal a dialog window in a browser (Internet Explorer) and do something with the parent window after return.
Introduction
This article presents how to open a modal dialog window on a browser (IE only) which contains a web form. Submitting the form on the modal dialog window will refresh the main window content.
Background
I was working on a project to convert a Windows application into a Web-based application. The Windows application's main form displays a DataGrid
. Clicking on a row of the DataGrid
opens a modal dialog window which holds detailed information about that DataGrid
row record. The user can edit the data on the modal dialog window, and clicking on an Update button closes the dialog and refreshes the DataGrid
on the main form. The client wanted the same effect in the web application. After much R & D, I came with a solution which I want to share with you.
How to open a modal dialog window and how to get a return value from it?
Since I have no time, my source project contains all the code in one file (sorry! no separate business logic or data access logic classes given).
First of all, let's look at the JavaScript code for opening a modal window (the OpenModalDialog
function in the Default.aspx page):
vReturnValue = window.showModalDialog(url,"#1","dialogHeight: 300px; dialogWidth: 600px;" +
"dialogTop: 190px; dialogLeft: 220px; edge: Raised; center: Yes;" +
"help: No; resizable: No; status: No;");
The vReturnValue
variable will contain the return value of the modal dialog window (when closed), which we can set in the ModalWindow
form (in the detail.aspx page).
window.returnValue = true;
//(I am returning true to refresh Main page and false for no action)
You can give any value to be returned.
Postback from JavaScript
The most important thing for me is to refresh the grid when I get 'true' as the return value from the modal window. For that, I use (look in JavaScript's OpenModalDialog
function):
__doPostBack(btnName,''); //(this will trigger 'btnName' butoon's Click event)
In the default.aspx page, I have used btnAddNew
to add new data. Using the above JavaScript, I can fire the Click event of this button.
Note :To make this work, you have to set the default.aspx page's EnableEventValidation
attribute to False
. Setting this attribute to false enables us to fire a postback (server side events) using JavaScript.
Request
Any suggestions and additional functionality to improve this code is heartily welcomed. Feel free to ask any questions related to this article. Thanks...