2012-03-23 40 views
13

Ho un modulo in cui un utente può eliminare un record e desidero un messaggio popup in cui l'utente deve fare clic su OK per confermare l'eliminazione.ASP.NET conferma prima di eseguire codebehind

pulsante Elimina: la funzione

<asp:Button ID="btnDelete" runat="server" Text="Delete" UseSubmitBehavior="false" OnClick="btnDelete_Click" OnClientClick="confirmation();" /> 

Conferma:

function confirmation() { 
     var answer = confirm("Are you sure you want to delete? This action cannot be undone.") 
    } 

Così adesso, fare clic sul pulsante di eliminazione esegue Sub btnDelete_Click nel codice dietro indipendentemente dal fatto che si fa clic su ok o annullare nel casella pop-up. So che posso aggiungere if (answer) {- some code here -} nella mia funzione javascript, ma è possibile usare javascript per eseguire il codice dal codebehind? O c'è un altro modo per farlo?

+2

È sufficiente restituire false quando l'utente fa clic su Annulla e true quando fa clic su OK. Guarda la risposta di: Thit Lwin Oo –

risposta

30

Si prega di provare come segue. Devi restituire il risultato della funzione di conferma (vero o falso).

<asp:Button 
    ID="btnDelete" 
    runat="server" 
    Text="Delete" 
    UseSubmitBehavior="false" 
    OnClick="btnDelete_Click" 
    OnClientClick="return confirmation();" /> 

 

function confirmation() { 
    return confirm("Are you sure you want to delete?"); 
} 
+16

Si potrebbe semplicemente 'return confirm (...)' – Esailija

+0

Non funziona, esegue ancora btnDelete_Click Sub nel codice dietro ... – Sara

+1

@Sara dovrebbe funzionare. Ho riscontrato questo problema e il punto è OnClientClick = "return JSFunction();" e che JSFunction restituisce vero o falso. Se è falso, non verrà pubblicato. Si prega di riprovare. –

-2

Se si desidera javascript per metodi di accesso nel codice dietro si può sempre esporli in un servizio RESTful.

$.ajax({ 
    url: 'url to the rest call', 
    success: successfuntion(), 
    dataType: 'text/json' 
}); 

Fare in modo che la chiamata REST esegua la logica necessaria e restituisca alcuni dati per indicare un esito positivo. Quindi usa la funzione success per rimuovere l'elemento dal DOM.

0

Se si desidera escludere del codice dal lato server senza effettivamente rendere il post, è necessario utilizzare ajax per farlo.

function confirmation() { 
     var answer = confirm("Are you sure you want to delete? This action cannot be undone.") 
     if(answer) 
     { 
      $.post("ajaxserverpage.aspx?item=34",function(data){ 
       alert(data); 
      }); 
     } 
     return false; 
    } 

e hanno una pagina chiamata ajaxserverpage.aspx e nel caricamento della pagina di quella pagina, controllare la stringa di query ed eseguire il codice lato server in questione e restituire qualche stringa

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.QueryString["item"] != null) 
     { 
      // read the item and do your stuff here 
     Response.Write("Deleted succssfully"); 
     Response.End(); 
     } 
    } 

È anche possibile utilizzare generic handler (.ashx) per eseguire l'elaborazione lato server ajax anziché il file .aspx. Preferirei questo metodo.

4

si prega di utilizzare questo esempio:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return ConfirmOnDelete();"/> 

<script type="text/javascript">  
    function ConfirmOnDelete() { 
    if (confirm("Do you really want to delete?") == true) 
     return true; 
    else 
     return false; 
    } 
</script> 
9

mettere questo nel codice aspx :

OnClientClick="return confirm('Are you sure you want to delete this project?');" 
3

Possiamo farlo facilmente utilizzando ConfirmButtonExtend ehm,

<ajaxToolkit:ConfirmButtonExtender ID="cbeDelete" TargetControlID="btnDelete" ConfirmText="Are you sure you want to delete? This action cannot be undone." runat="server"> 

è molto semplice ...

0

Penso sopra dovrebbe funzionare se non si è in grado di usarlo con Button, Prova il <asp:link button>. Il mio funziona bene.Pagina

ASPX: -

<asp:LinkButton ID="takeActionBtn" CausesValidation="false" runat="server" 
     onclientclick="return confirm('Do you really want to perform Action ?');"> Take Action </asp:LinkButton> 

VB del server codebehind: -

Protected Sub takeActionBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles takeActionBtn.Click 

End Sub 

Una cosa che ho notato è che se si utilizza il controllo (ascx) all'interno di una pagina si può necessità di off/on a pagina o livello di controllo AutoEventWireup="false" <%@ control in <%@ page

Buona fortuna !! Verrà visualizzato

0

1) Form Design

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type = "text/javascript"> 
    function Confirm() { 
     var confirm_value = document.createElement("INPUT"); 
     confirm_value.type = "hidden"; 
     confirm_value.name = "confirm_value"; 
     if (confirm("Do you want to save data?")) { 
      confirm_value.value = "Yes"; 
     } else { 
      confirm_value.value = "No"; 
     } 
     document.forms[0].appendChild(confirm_value); 
    } 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <asp:Button ID="btnConfirm" runat="server" 
OnClick = "OnConfirm" Text ="Raise Confirm" OnClientClick = "Confirm()"/> 
</form> 
</body> 
</html> 

2) Codebehind

public void OnConfirm(object sender, EventArgs e) 
{ 
string confirmValue = Request.Form["confirm_value"]; 
if (confirmValue == "Yes") 
{ 
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"alert('You clicked YES!')", true); 
} 
else 
{ 
    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true); 
} 
} 

3) Quando si fa clic sulla casella di conferma pulsante Elimina.

4) Se si fa clic su OK, quindi OK parte lavorerà in codice altro No Parte

5) Lo stesso metodo in GridView pulsante Elimina.

3

So che questo è vecchio post, ma è possibile inserire le risposte sopra in una riga come questa. E non hai nemmeno bisogno di scrivere la funzione.

<asp:Button runat="server" ID="btnDelete" Text="Delete" OnClick="btnDelete_Click" OnClientClick="if (!confirm('Are you sure you want to delete ? ')) return false;" /> 
+1

Semplice ma elegante, questo ha funzionato anche per me. E meno codice di alcune delle altre soluzioni. –

0

Si può semplicemente mettere:

onclientclick = "return (window.confirm('text message')); 

nella pagina ASPX, fa la stessa cosa.

Problemi correlati