giovedì 5 marzo 2009

Asp.net: visualizzare alert, mesaggio di conferma - integrare javascript con asp.net

Potrebbe capitare di dover visualizzare un messagio di conferma come un alert di javascript ad esempio... prima di eliminare un record ...

Integrare Javascript con asp.net richiede qualche attenzione in più.

Ma vediamo un modo per ottenere il risultato:



ecco quindi un bel pezzo di codice da incollare e modificare a vostro piacimento....



ClientScript.RegisterStartupScript(Me.GetType(), "ClientScript", "alert ('Attenzione, aggiornamento non possibile')", True)



Questo esempio è valido con VB.
Vi farà comparire un alert con il vostro testo!

In caso di problemi postate un commento!

Alla prossima!

10 commenti:

  1. è possibile far apparire un alert di conferma con i tasti SI e NO? Il problema è che non mi serve al momento del click sul bottone, ma vorrei che il messaggio deve apparire a una determinata condizione. Che tipo di script dovrei mettere da vb.net? E come dovrei fare a leggere la risposta selezionata?

    RispondiElimina
  2. Certo,
    potresti provare a sostituire il codice javascript dell'esempio del post:
    "alert ('Attenzione, aggiornamento non possibile')"

    con
    "show_confirm()"

    e poi nel codice della pagina inserire il codice javascript
    function show_confirm()
    {
    var r=confirm("Press a button");
    if (r==true)
    {
    alert("You pressed OK!");
    }
    else
    {
    alert("You pressed Cancel!");
    }
    }

    fammi sapere come va

    RispondiElimina
  3. praticamente il messaggio appare solo alla fine del metodo che ho in vb.net.
    Spiego meglio il mio problema:
    Ho un fileupload e un button per caricare i file. Al momento del click sul button, se il file è stato già caricato, vorrei che apparisse il messaggio "Vuoi sovrascrivere il file?" e se l'utente risponde SI allora sempre da codice vb.net sovrascrivo il file, altrimenti non lo carico. Come faccio a inserire del codice vb.net in asp.net? Perchè adesso il messaggio mi appare solo alla fine del metodo dell'evento click.

    RispondiElimina
  4. oppure all'interno di

    if (r==true)
    {
    alert("You pressed OK!");
    }

    invece dell'alert posso richiamare un metodo di vb.net?

    RispondiElimina
  5. ho inserito la funzione vb.net direttamente nella pagina asp.net ma sembra che non funziona. Dove sbaglio? Come faccio a richiamare la funzione Sovrascrivi()?
    Comunque non so perchè non mi fa inserire gli script da qui. Quindi ho rimosso i tag di apertura e chiusura (< e >)


    script type="text/javascript"
    function show_confirm()
    {
    var r=confirm("Immagine già esistente. Vuoi sovrascriverla?");
    if (r==true)
    {
    Sovrascrivi()
    }
    else
    {
    }
    /script

    script language="vb" runat="server"
    Public Sub Sovrascrivi()

    .................

    End Sub
    /script

    RispondiElimina
  6. Scusa se non ho risposto prima.

    Leggendo i tuoi commenti credo tu abbia bisogno di uno script come indicato in questo tutorial:

    http://www.asp.net/data-access/tutorials/adding-client-side-confirmation-when-deleting-vb

    Dimmi se hai risolto o sei hai altri problemi ;)

    RispondiElimina
  7. no lorenzo non credo che mi aiuti il link che mi hai passato. Mostra come configurare la proprietà OnClientClick per il pulsante "Elimina" in un CommandField di una gridview. E poi mostra come lanciare lo stesso messaggio avendo un linkbutton o una imagebutton con la proprietà OnClientClick="return confirm('Are you certain you want to delete this product?');"

    Tutto ciò non è utile al mio problema.

    1. Io ho una ImageButton che, sull'evento click, carica il file inserito in un FileUpload e non deve lanciare nessun messaggio di conferma (quindi la proprietà OnClientClick non mi serve)

    2. Sull'evento click deve però controllare se il file che si vuole caricare esista già e che quindi deve evitare di sovrascriverlo.

    3. Se il file esiste già allora deve apparire il messaggio di conferma "Sicuro di voler sovrascrivere?"

    4. Il problema è nel lanciare il messaggio di conferma solo se si verifica questa condizione. E se si può fare, dovrei anche conoscere il tasto cliccato, se è OK allora sovrascrivo il file altrimenti non lo carico e non sovrascrivo

    RispondiElimina
  8. ok... puoi mandarmi il codice delle pagine che ci do un'occhiata?

    RispondiElimina
  9. Codice asp.net:






    Codice vb.net sull'evento click dell'imagebutton:

    Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnUploadN.Click

    If My.Computer.FileSystem.FileExists(Server.MapPath("Immagini") & "\" & System.IO.Path.GetFileName(FileUpload1N.PostedFile.FileName)) = False Then
    Try
    FileUpload1N.SaveAs(Server.MapPath("Immagini") & "\" & System.IO.Path.GetFileName(FileUpload1N.PostedFile.FileName))
    Catch Exc As Exception
    ClientScript.RegisterStartupScript(Me.GetType(), "ClientScript", "L'immagine non può essere salvata per un errore nell'applicazione", True)
    End Try

    Else

    'qui deve lanciare il messaggio di conferma per sovrascrivere il file. se si procedo con la sovrascrittura

    End If
    End Sub

    RispondiElimina
  10. Una soluzione veloce potrebbe essere quella di mettere nell'else

    Dim Myscript As String = "var msg = confirm('are you sure'); if(msg){location.href='default.aspx?overwrite=y';}else {location.href='default.aspx?overwrite=n'}"

    ClientScript.RegisterClientScriptBlock(Me.[GetType](), "some", Myscript, True)

    e poi quindi gestire il parametro in get.

    RispondiElimina