2010-09-30 9 views
4

J'essaie d'afficher une boîte de message "Oui/Non" de codebehind en C#. Je veux appeler une procédure "AddRecord" si l'utilisateur clique sur "Oui", et ne rien faire si l'utilisateur clique sur "Non".Afficher une boîte d'alerte "Oui/Non" dans le code C# derrière

Idéalement, je veux utiliser le code ci-dessous, mais de codebehind:

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

Je recherche sur SO et Google, mais n'a pas été en mesure de trouver quoi que ce soit utile.

+1

Voulez-vous dire que vous ne pouvez pas utiliser jQuery, ou que vous ne pouvez pas utiliser javascript? – Carvellis

+0

ne peut pas utiliser jQuery.Javascript est bien; – user279521

+0

Vous devez ajouter le tag webforms à cette question –

Répondre

11

sur votre bouton Enregistrer Ajouter, faites la suivante:

<asp:button ID="AddRecordbutton" runat="server" Text="Add Record" 
onclick="AddRecordButton_Click" onclientclick="return confirm('add record?');" /> 

Dans votre code, mettez simplement le code d'enregistrement d'ajout dans votre gestionnaire d'événements AddRecordButton_Click. Il ne sera appelé que s'il clique sur Oui dans le menu contextuel. Alternativement, vous pourriez avoir votre codebehind assigner le code onclientclick lorsque le bouton est rendu initialement.

Par exemple:

protected void Page_Load(object sender, EventArgs e) { 
    AddRecordButton.OnClientClick = @"return confirm('Add Record?');"; 
} 
+0

à en juger par le commentaire publié par l'OP, je dirais que c'est la meilleure façon de le faire. – Kevin

+0

très cool @Chris. Merci pour la réponse. Le premier exemple de code fonctionne comme un charme. – user279521

+0

Oui, mais vous devez comprendre que c'est JavaScript ici, pas C#. Vous ne pouvez pas exécuter C# sur le client. –

1

Pour afficher un message, vous aurez besoin de javascript car cela se fait côté client. Pour une raison quelconque, si vous ne pouvez pas utiliser javascript, vous pouvez faire ce que AEMLoviji a suggéré et "simuler" avec une certaine habileté. Notez que vous n'avez pas besoin de jQuery pour afficher une boîte de message, un simple javascript suffira.

0

Si vous utilisez le Ajax Control Toolkit Modal Popup Extender sur un panneau avec vos deux boutons cela déclenche un événement sur le serveur qui peut être manipulé et exécuter selon la méthode/fonctions que vous souhaitez

Voir here un exemple

+0

essayé Ajax dans le passé, mais les serveurs de production (fermes Web) ont tendance à gâcher ajax, donc je préfère éviter Ajax; – user279521

2

Non, vous ne le faites pas.

Vous semblez mal comprendre ce concept de base de page Web. Une page ASPX est un programme court qui démarre, génère du HTML, puis se termine. Le code HTML est ensuite envoyé sur Internet au navigateur des utilisateurs. TOUT ce que vous faites dans un codebehind doit être complet avant que l'utilisateur n'en voie un seul.

Vous voulez vraiment une boîte de dialogue javascript. (En fait, de ce que vous décrivez, vous pouvez simplement créer un messagebox prospectifs div en HTML avec un formulaire HTML standard sur elle.)

+1

+1 pour les divs, les boîtes de message JS sont plutôt ennuyeuses et ne sont utilisées sur aucun site important depuis environ trois ans. –

+0

@gaearon, curieux ..... ennuyeux dans quel sens? – user279521

+0

@user: Une boîte d'alerte gèle le navigateur jusqu'à ce qu'elle soit désactivée et suive le thème du bureau de l'utilisateur au lieu du schéma de couleurs de la page Web. (un forum html ou une boîte de dialogue jQuery font partie de la page Web elle-même, et donc aucun de ces problèmes) –

0

Utilisez RegisterStartupScript

ScriptManager.RegisterStartupScript(this, GetType(), "unique_key", 
    "element.onclick = function(){ return confirm('Are you sure you want to delete?'); };", 
    true); 
0

Pour afficher oui/non

<script>  
     function AlertFunction() { 
      if (confirm('Are you sure you want to save this thing into the database?')) { 
       $('#ConfirmMessageResponse').val('Yes'); 
      } else { 
       $('#ConfirmMessageResponse').val('No'); 
      } 
     } 
    </script> 

pour y faire face d'un côté .net:

string confirmValue = ConfirmMessageResponse.Value; 
       if (confirmValue == "Yes") 
       {...}