Hi,
I'm trying to do the following :
If the user decides to press x of the Explorer (close) , while running my web application , I added a message asking is he sure
want to do it.
But my problem was that each button pressed on screen , caused this message to apper.
So , what I did is wrote the following functions and used them in order to prevent appearance of the message
In each button that appears on the page i added event :
OnClientClick
="javascript:ToggleBeforeUnload();"
BUT WHEN I'M TRYING TO SORT COLUMNS IN GRID , I STILL GET THE MESSAGE :(
I need your advise please on which even I must run ToggleBeforeUnload() or is there another solution ?
Thanks a lot !
--------- The functions I've wrote -------------
var
suppressWarningMsg = false;
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
function BeginRequestHandler(sender, eventArgs)
{
suppressWarningMsg =
true;
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, eventArgs)
{
suppressWarningMsg =
false;
}
function ConfirmExit()
{
if (!suppressWarningMsg)
{
return 'SURE WANNA EXIT ?;
}
}
window.onbeforeunload = ConfirmExit;
var onOff = false;
function ToggleBeforeUnload(onOff)
{
if (onOff == true)
{
window.onbeforeunload = ConfirmExit;
// Activate beforeunload event handler
}
else
{
window.onbeforeunload =
null;
}
}
| <div style="margin-bottom: 12px;"> |
| <div style="margin-bottom: 8px;"> |
| Describe the reason: |
| <asp:RequiredFieldValidator ID="rfvSituation" ControlToValidate="situation" runat="server" ErrorMessage="Please enter the reason.">*</asp:RequiredFieldValidator> |
| </div> |
| <telerik:RadEditor ID="situation" runat="server" ToolsFile="~/App_Data/RadEditor/BasicTools.xml" ContentAreaCssFile="~/css/RadEditorContentArea.css" Skin="Vista" Width="100%" EnableResize="true" AutoResizeHeight="true"> |
| <Content> |
| </Content> |
| <SpellCheckSettings DictionaryPath="~/App_Data/RadSpell" SpellCheckProvider="PhoneticProvider" DictionaryLanguage="en-US" /> |
| </telerik:RadEditor> |
| </div> |

I thought this was addressed in Q2 as stated in the following thread http://www.telerik.com/community/forums/aspnet-ajax/ajax/radajaxmanager-and-asp-net-validators.aspx
but i am stilling haveing the same problem,
to repo the problem
I undrestaned that if i set enableclientside... it will work but this is not an option for me.
1. fill out both textboxes (page valid)
2. click the button (all good)
3. remove content of text boxes(one or both),
4. click button and no validation summary
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="Button1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="vldSummary2" LoadingPanelID="LoadingPanel3" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="LoadingPanel3" runat="server">
<img alt='' src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading1.gif") %>' />
</telerik:RadAjaxLoadingPanel>
<asp:ValidationSummary ID="vldSummary2" runat="server" />
<table>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="first"></asp:Label>
<asp:RequiredFieldValidator ID="vldFirstNameSearc" runat="server" ControlToValidate="txtFirstNameSearch"
ErrorMessage="first required" Display="None">
</asp:RequiredFieldValidator>
</td>
<td>
<asp:Label ID="Label3" runat="server" Text="last"></asp:Label>
<asp:RequiredFieldValidator ID="vldLastNameSearch" runat="server" ControlToValidate="txtLastNameSearch"
ErrorMessage="last requried" Display="None">
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtFirstNameSearch" runat="server" MaxLength="50" Width="85px"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="txtLastNameSearch" runat="server" MaxLength="50" Width="85px"></asp:TextBox>
</td>
</tr>
</table>
<asp:Button ID="Button1" runat="server" Text="Next" />
<telerik:RadMultiPage ID="mpRes" runat="server" SelectedIndex="0">
<telerik:RadPageView ID="pvSearch" runat="server">
</telerik:RadPageView>
</telerik:RadMultiPage>
</form>
</body>
</html>
| Protected Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) |
| If e.CommandName = "CancelOrder" Then |
| Dim item As GridDataItem = DirectCast(e.Item, GridDataItem) |
| Dim OrderID As String = item.OwnerTableView.DataKeyValues(item.ItemIndex)("OrderID").ToString() |
| AccessDataSource2.UpdateCommand = "UPDATE [Orders] SET [OrderStatus] = 'X' WHERE [OrderID] = " & OrderID |
| AccessDataSource2.Update() |
| End If |
| End Sub |
| <telerik:GridButtonColumn |
| CommandName="CancelOrder" |
| Text="Cancel" |
| UniqueName="OrderCancelColumn" |
| ConfirmText="Are you sure you want to cancel this order?" |
| DataTextFormatString="Cancel" |
| DataTextField="OrderID"> |
| </telerik:GridButtonColumn> |
| <%@ Page Language="VB" ValidateRequest="false" %> |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| <script runat="server"> |
| Protected Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) |
| If e.CommandName = "CancelOrder" Then |
| Dim item As GridDataItem = DirectCast(e.Item, GridDataItem) |
| Dim OrderID As String = item.OwnerTableView.DataKeyValues(item.ItemIndex)("OrderID").ToString() |
| AccessDataSource2.UpdateCommand = "UPDATE [Orders] SET [OrderStatus] = 'X' WHERE [OrderID] = " & OrderID |
| AccessDataSource2.Update() |
| End If |
| End Sub |
| </script> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head runat="server"> |
| <title>Untitled Page</title> |
| </head> |
| <body> |
| <form id="form1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server" /> |
| <div> |
| <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="RadGrid1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManager> |
| <telerik:RadGrid ID="RadGrid1" runat="server" |
| AutoGenerateColumns="False" |
| Skin="Telerik" |
| PageSize="3" |
| AllowSorting="True" |
| AllowPaging="True" |
| DataSourceID="AccessDataSource1" |
| OnItemCommand="RadGrid1_ItemCommand"> |
| <MasterTableView |
| DataKeyNames="CustomerID" Width="100%" |
| HierarchyLoadMode="Client" |
| Name="Customers" |
| DataSourceID="AccessDataSource1"> |
| <DetailTables> |
| <telerik:GridTableView |
| DataKeyNames="OrderID" |
| Name="Orders" Width="100%" |
| HierarchyLoadMode="Client" |
| DataSourceID="AccessDataSource2"> |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="CustomerID" MasterKeyField="CustomerID" /> |
| </ParentTableRelation> |
| <DetailTables> |
| <telerik:GridTableView |
| DataKeyNames="OrderID" |
| Name="OrderDetails" Width="100%" |
| DataSourceID="AccessDataSource3"> |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="OrderID" MasterKeyField="OrderID" /> |
| </ParentTableRelation> |
| <Columns> |
| <telerik:GridBoundColumn SortExpression="UnitPrice" HeaderText="Unit Price" HeaderButtonType="TextButton" |
| DataField="UnitPrice"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="Quantity" HeaderText="Quantity" HeaderButtonType="TextButton" |
| DataField="Quantity"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="Discount" HeaderText="Discount" HeaderButtonType="TextButton" |
| DataField="Discount"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| <Columns> |
| <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton" |
| DataField="OrderID"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="OrderDate" HeaderText="Date Ordered" HeaderButtonType="TextButton" |
| DataField="OrderDate"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="Freight" HeaderText="Freight" HeaderButtonType="TextButton" |
| DataField="Freight"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="OrderStatus" HeaderText="Status" HeaderButtonType="TextButton" |
| DataField="OrderStatus"> |
| </telerik:GridBoundColumn> |
| <telerik:GridButtonColumn |
| CommandName="CancelOrder" |
| Text="Cancel" |
| UniqueName="OrderCancelColumn" |
| ConfirmText="Are you sure you want to cancel this order?" |
| DataTextFormatString="Cancel" |
| DataTextField="OrderID"> |
| </telerik:GridButtonColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| <Columns> |
| <telerik:GridBoundColumn SortExpression="CustomerID" HeaderText="CustomerID" HeaderButtonType="TextButton" |
| DataField="CustomerID"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="ContactName" HeaderText="Contact Name" HeaderButtonType="TextButton" |
| DataField="ContactName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="CompanyName" HeaderText="Company" HeaderButtonType="TextButton" |
| DataField="CompanyName"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| <ClientSettings AllowExpandCollapse="true"> |
| </ClientSettings> |
| </telerik:RadGrid> |
| <asp:AccessDataSource ID="AccessDataSource1" DataFile="~/App_Data/Nwind.mdb" |
| SelectCommand="SELECT * FROM Customers" runat="server"> |
| </asp:AccessDataSource> |
| <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/Nwind.mdb" |
| SelectCommand="SELECT * FROM Orders Where CustomerID = ?"> |
| <SelectParameters> |
| <asp:SessionParameter Name="CustomerID" SessionField="CustomerID" Type="string" /> |
| </SelectParameters> |
| </asp:AccessDataSource> |
| <asp:AccessDataSource ID="AccessDataSource3" DataFile="~/App_Data/Nwind.mdb" |
| SelectCommand="SELECT * FROM [Order Details] where OrderID = ?" runat="server"> |
| <SelectParameters> |
| <asp:SessionParameter Name="OrderID" SessionField="OrderID" Type="Int32" /> |
| </SelectParameters> |
| </asp:AccessDataSource> |
| </div> |
| </form> |
| </body> |
| </html> |