20 messaggi dal 11 giugno 2012
Salve a tutti, ho un problema riguardante una richiesta di conferma fatta con OnClientClick.
Su una pagina ho vari bottoni con OnClientClick e OnClick. Su un bottone ottengo il comportamento voluto (quindi prima mi fa la domanda e poi a seconda della risposta si comporta di conseguenza), ma negli altri tre non mi viene posta alcuna domanda e viene eseguito direttamente il codice, come se avesse ricevuto risposta affermativa.
Come mai?
Grazie
20 messaggi dal 11 giugno 2012
Questo è il codice della pagina:
<%@ Page Title="Aumento Capitale" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Capitale.aspx.cs" Inherits="WebApplication2.Capitale2.Capitale" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Aumento Capitale</h2>
    <p></p>
    <div style="display:inline-block;">
        <div style="float:left"><asp:Button ID="NuovoAumento" runat="server" Text="Nuovo Aumento" OnClick="NuovoAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ModificaAumento" runat="server" Text="Modifica Aumento" OnClick="ModificaAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ApriDiritto" runat="server" Text="Gestisci Diritti" OnClick="ApriDiritto_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ChiudiDiritto" runat="server" Text="Chiudi Diritti" OnClientClick="return confirm('Attenzione! L'operazione può essere eseguita solo una volta, inoltre qualsiasi successiva modifica in gestione diritti non verrà considerata. Sei sicuro?');" OnClick="ChiudiDiritto_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="GestisciMercato" runat="server" Text="Gestisci Mercato" OnClick="GestisciMercato_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ChiudiMercato" runat="server" Text="Chiudi Mercato" OnClientClick="return confirm('Attenzione! L'operazione può essere eseguita solo una volta, inoltre qualsiasi successiva modifica in gestione mercato non verrà considerata. Sei sicuro?');" OnClick="ChiudiMercato_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ChiudiAumento" runat="server" Text="Chiudi Aumento" OnClientClick="return confirm('Attenzione! L'operazione può essere eseguita solo una volta. Sei sicuro?');" OnClick="ChiudiAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="StoricoAumento" runat="server" Text="Storico Aumento" OnClick="StoricoAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="test" runat="server" Text="test" OnClientClick="return confirm('Sicuro?');" OnClick="test_click" /></div>
    </div>
    <div style="margin-top:20px; font-weight:bold; font-size:medium;">
        <asp:Literal ID="LiteralCapitale" runat="server"></asp:Literal>
    </div>
</asp:Content>
20 messaggi dal 11 giugno 2012
E questo il code-behind (solo dei bottoni interessati, ovviamente il bottone funzionante è quello di test che è anche quello inutile!):
protected void ChiudiDiritto_Click(object sender, EventArgs e)
        {
            ChiudiOpzione();
            ChiudiPrelazione();
            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["IntranetConnectionString"].ConnectionString);
            conn.Open();
            string sqlupdcap = "UPDATE Capitale SET diritto_confermato = 1";
            SqlCommand cmdupdcap = new SqlCommand(sqlupdcap, conn);
            cmdupdcap.CommandType = System.Data.CommandType.Text;
            cmdupdcap.ExecuteNonQuery();
            conn.Close();
            Response.Write("<script>alert('Diritti chiusi correttamente.');</script>");
        }

protected void ChiudiMercato_Click(object sender, EventArgs e)
        {
            string cod = "";
            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["IntranetConnectionString"].ConnectionString);
            conn.Open();
            string sql = "SELECT azioni, nominativo, codfis, comune, provincia, cap, indirizzo, dossier, conto, tel1, tel2, email FROM Cap_Mercato WHERE id_capitale IN (SELECT TOP 1 id FROM Capitale ORDER BY id DESC)";
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.CommandType = System.Data.CommandType.Text;
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                cod = reader[2].ToString();
                string sqlcount = "SELECT COUNT(*) FROM Soci2 WHERE cod_fis = '" + cod + "'";
                SqlCommand cmdcount = new SqlCommand(sqlcount, conn);
                cmdcount.CommandType = System.Data.CommandType.Text;
                string risultato = cmdcount.ExecuteScalar().ToString();
                if (risultato == "0")
                {
                    NuovoSocio(reader[7].ToString(), reader<img src="/forum/skins/default/images/emo/png-blue/icon_smile_8ball.png" class="absmiddle emoticon" />.ToString(), reader[1].ToString(), reader[2].ToString(), reader[3].ToString(), reader[5].ToString(), reader[6].ToString(), reader[0].ToString(), reader[4].ToString(), reader[9].ToString(), reader[10].ToString(), reader[11].ToString());
                }
                else
                {
                    AggiornaSocio(reader[0].ToString(), reader[2].ToString());
                }
            }
            reader.Close();
            string sqlupdcap = "UPDATE Capitale SET mercato_confermato = 1";
            SqlCommand cmdupdcap = new SqlCommand(sqlupdcap, conn);
            cmdupdcap.CommandType = System.Data.CommandType.Text;
            cmdupdcap.ExecuteNonQuery();
            conn.Close();
            Response.Write("<script>alert('Mercato chiuso correttamente.');</script>");
        }

protected void test_click(object sender, EventArgs e)
        {
            Response.Write("<script>alert('Qui funziona.');</script>");
        }
riduciamo il tutto a due pulsanti? Uno che funziona (test) e uno che non funziona (ad esempio quale? su alcuni non c'è onclientclick). Hai errori javascript nel browser?

Ormai programmano tutti... ma la professionalità appartiene a pochi
20 messaggi dal 11 giugno 2012
Uno di quelli che non funzionano è quello con ID ChiudiMercato. No, non ho errori javascript nel browser.
Ora ho risolto con una chiamata ad una funzione javascript esterna, ma la cosa sarebbe ugualmente interessante da capire :)
Il codice della pagina ora è così:
<%@ Page Title="Aumento Capitale" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Capitale.aspx.cs" Inherits="WebApplication2.Capitale2.Capitale" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <script type="text/javascript" language="javascript">
        function ConfirmDiritti() {
            if (confirm("Attenzione! L'operazione può essere eseguita solo una volta, inoltre qualsiasi successiva modifica in gestione diritti non verrà considerata. Sei sicuro?") == true) {
                return true;
            } else {
                return false;
            }
        }

        function ConfirmMercato() {
            if (confirm("Attenzione! L'operazione può essere eseguita solo una volta, inoltre qualsiasi successiva modifica in gestione mercato non verrà considerata. Sei sicuro?") == true) {
                return true;
            } else {
                return false;
            }
        }

        function ConfirmChiusura() {
            if (confirm("Attenzione! L'operazione può essere eseguita solo una volta. Sei sicuro?") == true) {
                return true;
            } else {
                return false;
            }
        }
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Aumento Capitale</h2>
    <p></p>
    <div style="display:inline-block;">
        <div style="float:left"><asp:Button ID="NuovoAumento" runat="server" Text="Nuovo Aumento" OnClick="NuovoAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ModificaAumento" runat="server" Text="Modifica Aumento" OnClick="ModificaAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ApriDiritto" runat="server" Text="Gestisci Diritti" OnClick="ApriDiritto_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ChiudiDiritto" runat="server" Text="Chiudi Diritti" OnClientClick="return ConfirmDiritti();" OnClick="ChiudiDiritto_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="GestisciMercato" runat="server" Text="Gestisci Mercato" OnClick="GestisciMercato_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ChiudiMercato" runat="server" Text="Chiudi Mercato" OnClientClick="return ConfirmMercato();" OnClick="ChiudiMercato_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="ChiudiAumento" runat="server" Text="Chiudi Aumento" OnClientClick="return ConfirmChiusura();" OnClick="ChiudiAumento_Click" /></div>
        <div style="float:left; margin-left:15px;"><asp:Button ID="StoricoAumento" runat="server" Text="Storico Aumento" OnClick="StoricoAumento_Click" /></div>
    </div>
    <div style="margin-top:20px; font-weight:bold; font-size:medium;">
        <asp:Literal ID="LiteralCapitale" runat="server"></asp:Literal>
    </div>
</asp:Content>

Ovviamente su alcuni tasti non c'è l'OnClientClick perché non era necessario!
3.939 messaggi dal 28 gennaio 2003
Ovviamente non funziona perché vi è un errore javascript.
Nei pulsante con id che comincia con Chiudi, hai messo:


OnClientClick="return confirm('Attenzione! L'operazione può essere...

da sostituire con:
OnClientClick="return confirm('Attenzione! L\'operazione può essere


ossia, è l'apostrofo che manda in errore.


ps. ho intercettato l'errore con Firefox, col plugin Web developer toolbar. IE11 non segnala l'errore e neanche chrome.

ciao
20 messaggi dal 11 giugno 2012
Vero! E pensare che lo abbiamo guardato in 3 e non ce ne siamo accorti nessuno :D
E poi io utilizzo chrome e in effetti non me lo segnalava l'errore!
Grazie mille!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.