Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    errore confirm in checkbox dinamici

    ciao a tutti
    io uso c#
    nella mia pagina inserisco una serie di checkbox in base ai campi di un database(quindi nel page_load), quando le checkbox vengono selezionate vorrei chiedere conferma prima di fare altre operazioni.
    avevo in mente mettere lo script in attributes del controllo e ho fatto così:
    codice:
    string Script = "<script language=JavaScript> function sicuro() {";
    Script += "if (window.confirm('Sicuro?')) ";
    Script += "return true; ";
    Script += "else ";
    Script += "return false;}";
    Script += "</script>";
    Page.RegisterStartupScript("sicuro", Script);
    ckb.Attributes.Add("onclick", "return sicuro()");
    (lo script l'ho trovato in rete)
    poi nella procedura che richiamo al CheckedChanged faccio così:
    codice:
    if (((CheckBox)sender).Attributes["onclick"].ToString()=="true")
    peccato che questa condizione sia sempre falsa.
    dove sta l'errore?
    grazie
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ciao cicciociccioxxx: :master: non azzardo una risposta perchè non ho capito quello che vuoi fare:

    se ti va, prova a spiegarlo diversamente:

    1) ho un checkbox

    2) quando clicco compare un messaggio di conferma

    3) se confermo, che faccio? se non confermo, che faccio?

    ciao
    Pietro

  3. #3
    ciao pietro
    se confermo vado a inserire un dato nel record corrispondente sul database, se non confermo non faccio nulla.
    Il mio problema è che anche se confermo la condizione
    codice:
    if (((CheckBox)sender).Attributes["onclick"].ToString()=="true")
    continua ad essere falsa.
    Immagino che quello qui sopra non sia il modo giusto di controllare il risultato dello script, mi sai dire qual'è il modo giusto?
    grazie
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Scusami se ho tardato a rispondere, ma stavo combattendo con un DataGrid

    Allora, non so se ho capito, ma ci provo:

    Ho un <asp:CheckBox id="ckb" runat="server" AutoPostBack="True"

    Perciò, quando cambio la selezione, voglio notificarlo al server, ma solo dopo conferma.

    Per fare questo, aggiungo il codice javascript al checkbox nell'evento load:

    codice:
    if(!this.IsPostBack)
    	this.ckb.Attributes.Add("onclick", "if(!window.confirm('Sicuro?')){this.checked=false;return;}");
    Allora, senza quel codice, il sistema aggiunge:
    codice:
    onclick="__doPostBack('ckb','')"
    Perciò, il codice aggiunto fa:
    se non confermi allora {togli il check al controllo; esci}.

    Perciò, se NON confermi, togli il check e NON mandi la pagina al server; se confermi, mandi la pagina al server.

    Nel server, nell'evento ckb_CheckedChanged, chiaramente ci arrivi SOLO perchè hai confermato, infatti,

    CheckBox ckb = (CheckBox) sender;
    this.Response.Write(ckb.Checked); //--> dà true sempre

    mentre this.Label1.Text = "attributo: " + ckb.Attributes["onclick"];
    restituisce "attributo: if(!window.confirm('Sicuro?')){this.checked=false; return;}"

    di più non so

    Pietro

  5. #5
    la tua soluzione sarebbe perfetta se non mi complicassi sempre la vita.
    solo che io non ho un <asp:CheckBox id="ckb" runat="server" AutoPostBack="True"
    ma una cosa del genere:
    codice:
    CheckBox ckb= new CheckBox();
    ckb.ID=rAnn["idAnnuncio"].ToString();
    ckb.Checked=false;
    ckb.AutoPostBack=true;
    ckb.CheckedChanged+=new EventHandler(approvaAnnuncio);
    dall'evento approvaAnnuncio ci devo passare lostesso perchè devo prima fare un controllo, poi se si da conferma devo anche inserire un campo nel database.
    posso trovare una maniera per non essere obbligata a passare dall'evento se non si da conferma, ma ho comunque bisogno di sapere che condizione devo mettere per controllare la risporta dell'utente.
    quella che avevo pensato io era
    codice:
    if (((CheckBox)sender).Attributes["onclick"].ToString()=="true")
    ma non funziona.

    grazie mille
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    so che non ti andrà, comunque tento

    aggiungo dentro il form un:

    <INPUT type="hidden" id="conferma" name="conferma" runat="server">

    nell'evento load:
    if(!this.IsPostBack) this.ckb.Attributes.Add("onclick", "document.getElementById('conferma').value = window.confirm('Sicuro?');");

    nell'evento onchanged del checkbox

    CheckBox ckb = (CheckBox) sender;
    this.Label1.Text = "conferma: " + this.conferma.Value + "\nckb.checked: " + this.ckb.Checked;

    che poi il checkbox sia creato a runtime, non ha nessuna importanza

    Pietro

  7. #7
    conferma mi risulta sempre stringa vuota
    non riesco a recuperare il valore restituito dallo script
    ma perchè?
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.