2009-10-17 7 views
2

J'ai bouton de sauvegarde dans environ 150 pages. Lorsque l'utilisateur clique sur le bouton de sauvegarde, je devrais désactiver le bouton après le clic. afin que l'utilisateur ne continue pas à cliquer sur le bouton Enregistrer à nouveau.Bouton désactiver la fonction après avoir cliqué sur elle

protected void Button1_Click(object sender, EventArgs e) 
    { 
     // right now once the user clicks the save button 
     Button1.Enabled = "false" 

    } 

maintenant je fais comme ça. Y at-il une meilleure solution que vous pouvez me fournir pour améliorer le codage ici serait génial.

merci

+0

Selon vous, qu'est-ce qui ne va pas avec votre solution actuelle? – pmarflee

Répondre

2

Vous pouvez également essayer de le désactiver via Javascript.

0

Ce que vous avez à faire est d'utiliser JavaScript et de le désactiver lorsque vous cliquez sur le côté client.

Cet événement de clic se déclenche lors d'une publication.

1

Vous devez utiliser JavaScript pour modifier le lien une fois que vous avez cliqué dessus afin d'éviter tout traitement ultérieur des clics, avant d'autoriser la publication de la publication. Une tentative naïve serait,

<asp:LinkButton runat="server" id="button" OnClientClick="this.href='#'"> 
    Click - doesn't quite work 
</asp> 

Cela empêche avec succès les clics successifs de déclenchement de la postback, mais il empêche également le premier clic de déclenchement de la publication. Un peu plus de logique est nécessaire pour que cela fonctionne correctement. Dans le codebehind, j'attrape l'extrait de code JavaScript de publication et je l'intègre dans une logique.

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    button1.OnClientClick = string.Format(
     "if(this.getAttribute('disabled')) return false; {0}; this.setAttribute('disabled','disabled'); return false;", 
     Page.ClientScript.GetPostBackEventReference(button1, null)); 
} 

Dans le modèle HTML:

<asp:LinkButton runat="server" id="button" > 
    Click - does not allow multiple postbacks 
</asp> 

Vous pouvez embellir ce avec un peu de CSS, et à ce moment-là je vous conseille notamment jQuery, de sorte que votre code est plus concis (en raison de son enchaînement de commande).

3

Je pense que la meilleure option pour y parvenir est d'utiliser javascript. Si vous utilisez jQuery (que je peux même commencer à recommander assez), vous pouvez mettre le javascript dans votre masterpage. Vous avez juste besoin de trouver un moyen de créer un sélecteur pour vos boutons de sauvegarde. Comme ceci:

$(document).ready(function(){ 
     $('.saveButton').bind("click", function(e) { 
       $(this).attr("disabled", "true"); 
      return true; //causes the client side script to run. 
     }); 
    }); 

Dans cet exemple, je suppose que tous les boutons sauver auraient la classe css « .saveButton », mais vous pouvez trouver votre propre façon de sélectionner le bouton.

À la votre!

+0

@Gus: si vous publiez du code comme votre extrait jQuery, assurez-vous de mettre les lignes en surbrillance puis cliquez sur le bouton "code" (010 101) dans la barre d'outils de l'éditeur ou appuyez sur Ctrl-K pour le formater. . Alors et seulement alors, ce sera la syntaxe mise en évidence et tout. –

+0

Salut Gus, merci pour la relecture si j'utilise le code ci-dessus dans la page maître. intally pendant le clic du bouton, il devrait obtenir ex essayer {public void fonction de sauvegarde() { // ici tout sauf le bouton doit être désactivé } catch (Exception e) { jet e; } enfin {// ici mon bouton de sauvegarde doit être activé // enfin mon bouton de sauvegarde devrait se permettre ici }} – happysmile

+0

@marc_s Quand ce bouton conserve son état d'origine (ie) d'état activé .. –

0

façon plus simple d'attacher le javascript pour désactiver le bouton après un clic de l'utilisateur serait ce (en page par événement onLoad):

myButton.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, null) + ";"); 

Mais si le bouton est répété sur plusieurs pages, vous pouvez peut-être créer la page maître imbriquée et mettre le bouton de sauvegarde là, ou hériter votre page de la classe qui implémente cette fonctionnalité de désactivation. En outre, vous pouvez "scanner" le contrôle que vous voulez désactiver après le clic!

Questions connexes