Hello,
I'm using a modal dialog which is a RadWindow. The page should present an alert using "radalert" if the user has not saved their work. When the save button is clicked a hidden field is updated "hdnIsModified". When the close button is clicked, the "ClosePage()" function is called which passes an argument to the calling page if the page has been modified. Before the page closes, "onBeforeWindowClose" is called to determine if the alert should be displayed.
The problem is that I'm getting an error message (Cant execute code from a freed script) if the user makes a change to a dropdown list inside the RadAjaxPanel, then clicks "save", then "Cancel". If the user does not change the dropdown list and only clicks "save", then "cancel", it works fine. The dropdown list causes an ajax request since it's inside the radajaxpanel. Any ideas why this could interfere with the RadAlert logic? The "Save" and "Cancel" buttons are not inside the RadAjaxPanel.
RadWindow as Modal:
I'm using a modal dialog which is a RadWindow. The page should present an alert using "radalert" if the user has not saved their work. When the save button is clicked a hidden field is updated "hdnIsModified". When the close button is clicked, the "ClosePage()" function is called which passes an argument to the calling page if the page has been modified. Before the page closes, "onBeforeWindowClose" is called to determine if the alert should be displayed.
The problem is that I'm getting an error message (Cant execute code from a freed script) if the user makes a change to a dropdown list inside the RadAjaxPanel, then clicks "save", then "Cancel". If the user does not change the dropdown list and only clicks "save", then "cancel", it works fine. The dropdown list causes an ajax request since it's inside the radajaxpanel. Any ideas why this could interfere with the RadAlert logic? The "Save" and "Cancel" buttons are not inside the RadAjaxPanel.
RadWindow as Modal:
function SavingChanges() {
var hdn = document.getElementById('<%=hdnIsModified.ClientID %>');
if (hdn) {
hdn.value = 'true';
}
}
function ClosePage() {
var oModifications = document.getElementById('<%=hdnIsModified.ClientID %>');
if (oModifications.value.toLowerCase() == "true") {
GetRadWindow().close('reload');
} else {
GetRadWindow().close();
}
}
function onBeforeWindowClose(oWinow, args) {
function callbckFunction(confirmResult) {
if (confirmResult) {// confirmResult == true
// Close this RadWindow
// First remove the handler in order to avoid recursion
oWinow.remove_beforeClose(onBeforeWindowClose);
oWinow.close();
// Reattach the handles after the window is closed.
// RECOMMENDATION: If the DestroyOnClose="true" property is set in in the RadWindow's declaration,
// then remove this line of the code:
oWinow.add_beforeClose(onBeforeWindowClose);
}
}
// Close the window: If modifications exist, reload parent grid by passing argument
var oModifications = document.getElementById('<%=hdnIsModified.ClientID %>');
if (oModifications.value.toLowerCase() != "true") {
// Cancel closing
args.set_cancel(true);
// Show a rad confirmation dialog
var sMsg = "Are you sure you want to cancel " + document.getElementById('<%=Mode.ClientID %>').value.toLowerCase() + "ing" + " the new requirement?";
radconfirm(sMsg, callbckFunction, 400, 150, null, "Confirm");
}
}
function GetRadWindow() {
var oWindow = null;
if (window.radWindow)
oWindow = window.radWindow;
else if (window.frameElement.radWindow)
oWindow = window.frameElement.radWindow;
return oWindow;
}
function pageLoad() {
// Get the RadWindoiw object that contains this page
var oWindow = GetRadWindow();
// Attach RadWindow's OnClientBeforeClose handler
oWindow.add_beforeClose(onBeforeWindowClose);
}
function pageUnload() {
// Get the RadWindoiw object that contains this page
var oWindow = GetRadWindow();
// NOTE! If the DestroyOnClose="true" is set in the RadWindow's declaration,
// then the oWindow object will be 'null'.
if (oWindow) {
// Detach RadWindow's OnClientBeforeClose handler
oWindow.remove_beforeClose(onBeforeWindowClose);
}
}
<
asp:Button
ID
=
"Save"
runat
=
"server"
Text
=
"Save"
onclick
=
"Save_Click"
OnClientClick
=
"SavingChanges();"
/>
<
input
id
=
"butCancel"
type
=
"button"
value
=
"Cancel"
onclick
=
"ClosePage();"
/>
<
div
style
=
"margin-left: 15px; margin-right: 10px; margin-top: 8px; margin-bottom: 8px"
>
<
hr
/>
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel1"
runat
=
"server"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
<
div
ID
=
"DataEntryArea"
class
=
"span-22 last"
runat
=
"server"
>
</
div
>
</
telerik:RadAjaxPanel
>
<
hr
style
=
"margin:0.5em 0 0 0"
/>
</
div
>