web-dev-qa-db-fra.com

ASP.NET confirme avant d'exécuter codebehind

J'ai un formulaire où un utilisateur peut supprimer un enregistrement et je veux un message contextuel dans lequel l'utilisateur doit cliquer sur OK pour confirmer la suppression.

Bouton Supprimer:

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

Fonction de confirmation:

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

Donc maintenant, cliquer sur le bouton Supprimer exécute le sous-code btnDelete_Click dans le code derrière, que vous cliquiez bien ou que vous annuliez dans la boîte de dialogue contextuelle. Je sais que je peux ajouter si (réponse) {- du code ici -} dans ma fonction javascript, mais est-il possible d'utiliser du javascript pour exécuter du code à partir de codebehind? ou y a-t-il une autre manière de le faire?

13
Sara

S'il vous plaît essayez comme suit. Vous devez renvoyer le résultat de la fonction de confirmation (true ou false).

<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?");
}
31
Thit Lwin Oo

Mettez ceci dans votre code aspx:

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

veuillez utiliser cet exemple:

<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>
4
Ashwini Verma

Je sais que c’est un vieil article, mais vous pouvez mettre les réponses ci-dessus dans une ligne comme celle-ci. Et vous n'avez même pas besoin d'écrire la fonction.

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

Nous pouvons facilement le faire en utilisant ConfirmButtonExtender,

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

C'est très simple...

3
thevan

1) Conception de formulaire

<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) le code derrière

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) Lorsque vous cliquez sur le bouton Supprimer, la boîte de confirmation s’affiche.

4) Si vous cliquez sur ok, la partie OK fonctionnera dans le code, sinon aucune partie.

5) La même méthode dans GRIDVIEW DELETE BUTTON. 

0
Ratha Krishnan

Une autre méthode consiste à utiliser AJAX Toolkit ConfirmButton Extender, comme indiqué ci-après:

http://www.ezineasp.net/Samples/ASP-Net-AJAX-cs/Control-Toolkit/AJAX-ConfirmButton-Control/Default.aspx

0
mellodev

Je pense que ci-dessus devrait fonctionner si vous n'êtes pas en mesure de l'utiliser avec Button, essayez le <asp:link button>. Le mien fonctionne très bien. 

Page ASPX: -  

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

VB code du serveur derrière: -

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

End Sub

Une chose que j'ai notée est que si vous utilisez le contrôle (ascx) dans une page, vous devrez peut-être activer/désactiver la page ou le niveau de contrôle AutoEventWireup="false" <%@ control in <%@ page 

Bonne chance !!

0
PatBad

Si vous voulez exécuter du code côté serveur sans que le message soit réellement publié, vous devez utiliser ajax pour le faire.

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; 
    }

et avoir une page appelée ajaxserverpage.aspx et dans le chargement de la page de cette page, vérifiez la chaîne de requête, exécutez le code correspondant côté serveur et renvoyez une chaîne. 

   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();
        }
    }

Vous pouvez également utiliser generic handler (.ashx) pour effectuer le traitement côté serveur ajax à la place du fichier .aspx. Je préférerais cette méthode.

0
Shyju

Vous pouvez simplement mettre:

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

dans la page ASPX, il fait la même chose.

0
Garry_G