none
Bootbox com ASP.NET e retorno do bootbox.confirm() no code-behind RRS feed

  • Pergunta

  • Estou tendo dificuldades para realizar a chamada de uma função javascript a partir do evento OnClientClick de um botão em ASP.NET. Não consegui decifrar o que pode estar acontecendo, pois já consegui rodar a função a partir do evento antes e, de repente, ela simplesmente parou de funcionar.

    Além disso, caso consigam me ajudar, como faço para receber o retorno dessa função no codebehind para manipular minha deleção? Exemplo: Se true efetuo a deleção, se false nada acontece.

    <script src="../Scripts/bootbox.min.js"></script>
            <script type="text/javascript">
                function retornar() {
                    bootbox.confirm("Deseja realmente excluir este registro ?", function (retorno) {
                        if (retorno == true) {
                            alert("True");
                            return true;
                        }
                        else {
                            alert("False");
                            return false;
                        }
                    });
                }
    </script>
    
    <asp:Button ID="btnExcluir" CssClass="btn btn-default" Width="150px" runat="server" OnClientClick="retornar();" OnClick="btnExcluir_Click" Text="Excluir" />

    quinta-feira, 27 de novembro de 2014 15:52

Respostas

  • Veja o que você pode estar fazendo de errado. Segue um exemplo para você fazer numa tela nova (para ver o efeito)

    ASPX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="PH.Framework.UI.WebForm3" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
                function retornar() {
                    if (window.confirm("Deseja realmente excluir este registro ?"))
                        return true;
                    else
                        return false;
                }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" OnClientClick="return retornar();" />
        </div>
        </form>
    </body>
    </html>
    

    CS

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace PH.Framework.UI
    {
        public partial class WebForm3 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "foi", "window.alert('excluiu')", true);
            }
        }
    }

    quinta-feira, 27 de novembro de 2014 16:58

Todas as Respostas

  • Na marcação do botão, no evento OnClientClick, troque:

    OnClientClick="retornar();"

    Por:

    OnClientClick="return retornar();"

    quinta-feira, 27 de novembro de 2014 16:09
  • Continua não executando quando passo a função direto no evento, porém, consegui a partir do code-behind da seguinte maneira:

    protected void btnExcluir_Click(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "script1", "return retornar();", true);
        }

    Porque isso acontece? Na minha concepção o script deveria ser executado de uma forma ou de outra, correto? Além disso, tem ideia de como faço para pegar o retorno da função a partir do code-behind?

    quinta-feira, 27 de novembro de 2014 16:33
  • Veja o que você pode estar fazendo de errado. Segue um exemplo para você fazer numa tela nova (para ver o efeito)

    ASPX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="PH.Framework.UI.WebForm3" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
                function retornar() {
                    if (window.confirm("Deseja realmente excluir este registro ?"))
                        return true;
                    else
                        return false;
                }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" OnClientClick="return retornar();" />
        </div>
        </form>
    </body>
    </html>
    

    CS

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace PH.Framework.UI
    {
        public partial class WebForm3 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "foi", "window.alert('excluiu')", true);
            }
        }
    }

    quinta-feira, 27 de novembro de 2014 16:58