Ir para conteúdo
Fórum Script Brasil
  • 0

Confirmação seguida de Confirmação


Denis_Rave

Pergunta

Olá pessoal.

Ando agora me aventurando no mundo Web.

Vou tentar explicar da melhor maneira possível minha situação.

O que eu preciso é exibir duas mensagens de confirmação ao usuário, uma seguida da outra, para que determinada operação possa ser executada no codebehind. Porém, entre uma confirmação e outra, deve ser executado um procedimento, e a partir do resultado desse procedimento, defino se a segunda mensagem será exibida. Calma que tem mais: tudo isso com AJAX xD.

O algoritmo é meio que assim:

Usuário clica no botão -> Mensagem confirmação -> Clicou OK-> Executa função Codebehind -> Função retornou false -> Nova mensagem de confirmação -> Clicou OK -> Mostra alert.

Já tentei de tudo quanto é maneira (até mesmo usando Reflection, que foi o que chegou mais próximo), e não dá certo.

Tipo, exibir uma mensagem de confirmação eu consigo, o problema está sendo exibir a segunda mensagem. O máximo que cheguei foi exibir as duas mensagens, porém mesmo se eu clicar cancelar na segunda, ele executa o alert.

Segue meu código até agora, usando Reflection para simular um Click no botão Hidden

<head runat="server">
             <title>Untitled Page</title>
         
             <script type="text/javascript">
             function valida()
             {
                 return confirm('Deseja continuar?');
         
             }
             </script>
         
         </head>
         <body>
             <form id="form1" runat="server">
                 <asp:ScriptManager ID="ScriptManager1" runat="server" />
                 <div>
                     <span style="font-size: 32pt">Teste
         
                         
         
                         <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                             <ContentTemplate>
                                 <div style="visibility: hidden">
                                     <asp:Button ID="btnHidden" runat="server" Text="Hidden" OnClick="btnHidden_Click" /></div>
                                 <asp:Button ID="btnOK" runat="server" Text="OK" OnClientClick="return valida()"
                                     OnClick="btnOK_Click" />
                             </ContentTemplate>
                         </asp:UpdatePanel>
                     </span>
                 </div>
             </form>
         </body>
         </html>
using System.Reflection;    
   
       protected void btnOK_Click(object sender, EventArgs e)
             {
                 if (!Verifica())
                 {
                     Type t = typeof(Button);
                     object[] p = new object[1];
                     p[0] = EventArgs.Empty;
                     MethodInfo m = t.GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
                     m.Invoke(btnHidden, p);
                     ScriptManager.RegisterClientScriptBlock(this.btnHidden, btnHidden.GetType(), "Hidden", "alert('Dados salvos com sucesso');", true);
                 }
         
             }
             protected void btnHidden_Click(object sender, EventArgs e)
             {
                 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "Valida", "confirm ('Validação Incorreta. Deseja continuar?');", true);
             }
         
             private bool Verifica()
             {
                 //executa a verificação
               return false;
             }

Não achei nada do tipo na net, só para uma mensagem...

Abraços,

Denis

Editado por Denis_Rave
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá pessoal!

Consegui resolver o problema...foi mais simples do que isso ai em cima...

Usei o doPostBack do JavaScript para, após a segunda mensagem, gravar os dados...

Segue o código:

<head runat="server">
    <title>Untitled Page</title>

    <script type="text/javascript">
    function valida()
    {
        return confirm('Deseja continuar?');
    }
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <span style="font-size: 32pt">Teste<br />
                <br />
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <div style="visibility: hidden">
                            <asp:Button ID="btnHidden" runat="server" Text="Hidden" OnClick="btnHidden_Click" /></div>
                        <asp:Button ID="btnOK" runat="server" Text="OK" OnClientClick="return valida()" OnClick="btnOK_Click" />
                    </ContentTemplate>
                </asp:UpdatePanel>
            </span>
        </div>
    </form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            string eventArg = Request["__EVENTARGUMENT"];
            if (eventArg == "Salvar")
                GravaDados();
        }
    }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (!Verifica())
        {
            ScriptManager.RegisterClientScriptBlock(this.Page, Page.GetType(), "func", "function Confirmar() { return confirm ('Salvar assim mesmo?'); }", true);
            ScriptManager.RegisterClientScriptBlock(this.btnHidden, btnHidden.GetType(), "Hidden", "if (Confirmar()) __doPostBack('__Page', 'Salvar');", true);
        }

    }

    private bool Verifica()
    {
        //executa a verificação
        return false;
    }


    private void GravaDados()
    {
        //Gravação
    }

Abraços

Editado por Denis_Rave
Link para o comentário
Compartilhar em outros sites

  • 0

Existe um framework com nome de ASP.net AJAX Control Toolkit e, a função desse, é prover alguns componentes de interface, baseado em AJAX. Para facilitar seu trabalho, dê uma olhada no componente ConfirmButton. Resumindo ele faz o seguinte: ao clicar em um determinado botão, ele exibe um confirm de Javascript, requerindo confirmação de Postback. Caso "OK", postback é feito. Caso "Cancelar", postback não é feito e você tem oportunidade em executar uma função (código em geral) Javascript.

Dê uma olhada no Toolkit e nos dê seu feedback, caso necessário.

Até mais!

P.S: http://www.asp.net/AJAX/AjaxControlToolkit...firmButton.aspx (página de demonstração do componente citado)

Link para o comentário
Compartilhar em outros sites

  • 0

O Control Toolkit é complemento do framework ASP.net AJAX. Você pode usar os dois juntos sem nenhum problema.

Vale a pena ressaltar que: no .Net 2.0/3.0, para utilizar AJAX, você deve instalar o Microsoft ASP.NET AJAX. Já no .Net 3.5, esse framework não é mais necessário, já que ele está embutido nativamente. Assembly físico: System.Web.Extensions.dll

Em qualquer versão o uso de ambos é permitido, já que o ASP.net AJAX é a base para uso de AJAX. Já o Control Toolkit é um conjunto de componentes AJAX.

Qualquer dúvida, abra um post! Falows!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Anderson --
Olá pessoal!

Consegui resolver o problema...foi mais simples do que isso ai em cima...

Usei o doPostBack do JavaScript para, após a segunda mensagem, gravar os dados...

Segue o código:

<head runat="server">
    <title>Untitled Page</title>

    &lt;script type="text/javascript">
    function valida()
    {
        return confirm('Deseja continuar?');
    }
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <span style="font-size: 32pt">Teste<br />
                <br />
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <div style="visibility: hidden">
                            <asp:Button ID="btnHidden" runat="server" Text="Hidden" OnClick="btnHidden_Click" /></div>
                        <asp:Button ID="btnOK" runat="server" Text="OK" OnClientClick="return valida()" OnClick="btnOK_Click" />
                    </ContentTemplate>
                </asp:UpdatePanel>
            </span>
        </div>
    </form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            string eventArg = Request["__EVENTARGUMENT"];
            if (eventArg == "Salvar")
                GravaDados();
        }
    }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (!Verifica())
        {
            ScriptManager.RegisterClientScriptBlock(this.Page, Page.GetType(), "func", "function Confirmar() { return confirm ('Salvar assim mesmo?'); }", true);
            ScriptManager.RegisterClientScriptBlock(this.btnHidden, btnHidden.GetType(), "Hidden", "if (Confirmar()) __doPostBack('__Page', 'Salvar');", true);
        }

    }

    private bool Verifica()
    {
        //executa a verificação
        return false;
    }


    private void GravaDados()
    {
        //Gravação
    }

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...