Inquiridor
cancelar o sumbit

Pergunta
-
faço um submit na página assim que clico em um botão. isso está dentro de um updatepanel.
e logo acima do update panel tem um updateprogress que aparece uma mensagem de executando.
queria saber como eu paro esse submit e limpo o updadateprogress.
Todas as Respostas
-
-
isso mesmo. como seria? quando eu clicar num botão será executado um insert... só que durante essa execução eu posso ter a opção de cancelar a execução a qualquer momente. ou seja, interromper o post. entendeu?
- Editado rafa-martin quarta-feira, 17 de outubro de 2012 17:06 rrr
-
Entendi, para cancelar um postback assíncrono utilize o PageRequestManager do namespace Sys.WebForms:
No botão que irá cancelar o post
<asp:Button runat="server" Text="AbortPostBack" ID="btnAbort" OnClientClick=" Sys.WebForms.PageRequestManager.getInstance().abortPostBack(); alert('Postback Cancelled'); "/>
No evento ClientClick é chamado o método abortPostBack().
Veja o código completo abaixo:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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 runat="server"> <title>Cancel Async PostBack</title> <script type="text/javascript"> function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(cancelPostBack); } function cancelPostBack(sender, args) { if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) { alert('One postback at a time please'); args.set_cancel(true); } } </script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Button runat="server" Text="PostBackFirst" ID="btnPostF" onclick="btnPostF_Click"/> <asp:Button runat="server" Text="PostBackSecond" ID="btnPostS" onclick="btnPostS_Click"/> <asp:Button runat="server" Text="AbortPostBack" ID="btnAbort" OnClientClick="Sys.WebForms.PageRequestManager.getInstance().abortPostBack(); alert('Postback Cancelled');"/> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </ContentTemplate> </asp:UpdatePanel> </form> </body> </html>
Fonte: http://www.dotnetcurry.com/ShowArticle.aspx?ID=176
Rodrigo Reis Ferreira
Microsoft Certified -
cara esse exemplo que você pegou da net eu já vi e não rola
o que acontece: eu tenho um updateprogress:
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<div align="center" style="width: 100%;" id='loading'>
<asp:Panel ID="panelLoading" runat="server" Height="100%" Width="100%">
<img src="../Imagens/carregando.gif" / alt="">
<asp:Label ID="lblCarregando" runat="server" Font-Bold="False" Font-Size="Small"
Text="Gerando Balanço/DRE..." Font-Names="arial, helvetica, Serif"></asp:Label>
</asp:Panel>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
meu update panel<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="pnl1" runat="server">
<asp:Button runat="server" Text="cancel" ID="cancel"/>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
no evento load do meu form faço o seguinte:Dim csname As String = "OnSubmitScript"
Dim cstype As Type = Me.GetType()
Dim cs As ClientScriptManager = Page.ClientScriptHttpContext.Current.Session("Mensagem") = String.Empty
If Not cs.IsOnSubmitStatementRegistered(cstype, csname) Then
Dim cstext As String = "if (typeof(ValidatorOnSubmit) == 'function' && ValidatorOnSubmit() == false)return false; else { var myCtl = document.getElementById('" & Convert.ToString(Me.btFiltrar.ClientID) & "'); var myCtl1 = document.getElementById('" & Convert.ToString(Me.btView.ClientID) & "'); myCtl.value = 'Gerando Simulação...'; myCtl1.value = 'Visualizar...'; myCtl.disabled = true; myCtl1.disabled = true;}"
cs.RegisterOnSubmitStatement(cstype, csname, cstext)
End If
faço isso porque quando a página está submetendo eu desabilito alguns objetos, para não correr o risco do usuário clicar num botão novamente, por exemplo.nesse exemplo que você me passou o já fiz o teste. e o que acontece?
quando clico em cancelar continua com submit (aquele barrinha de progresso de carregando do ie fica ativa).
o que deveria acontecer quando eu clicar em cancelar é parar o postbanck da página e habilitar os objetos novamente.entendeu?
-
-
-
-
amigo, tem como passar o restante do seu código aspx? Uma coisa que fiquei na dúvida é como ta aparecendo a barra de carregamento do browser, porque como o botão que dispara ta dentro do UpdatePanel então irá executar de forma assíncrona.
Rodrigo Reis Ferreira
Microsoft Certified -
segue:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"
AsyncPostBackTimeout="3600"></asp:ScriptManager>
<br />
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<div align="center" style="width: 100%;" id='loading'>
<asp:Panel ID="panelLoading" runat="server" Height="100%" Width="100%">
<img src="../Imagens/carregando.gif" / alt="">
<asp:Label ID="lblCarregando" runat="server" Font-Bold="False" Font-Size="Small"
Text="Gerando Balanço/DRE..." Font-Names="arial, helvetica, Serif"></asp:Label>
</asp:Panel>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="pnl1" runat="server">
<br />
<asp:TextBox ID="txtCodigo" runat="server" Width="80px" Visible="false"></asp:TextBox>
<table bgcolor="#A5BEE7" style="width: 75%" border="0" align="center">
<tr>
<td class="style10" style="background- top; background-image: url('../Imagens/coolite.gif')" >
<table style="width:100%;" cellpadding="2" cellspacing="2" border="0">
<tr>
<td align="right" valign="bottom" width="60%">
<asp:Button ID="btExecutar" runat="server" Text="Executar" Width="150px" Height="40px"/>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</form>
no evento onclick do botão btExecutar eu chamo uma procedure. E começa a execuatar.O que preciso é cancelar esse procesamento a qualquer momento que eu queira. Ou seja, cancelar o submit.