Bonjour
j'ai un soucis en asp.net.
J'aimerais qu'un bouton ait le comportement suivant :
Lorsque l'utilisateur clique dessus, le curseur passe en sablier et le bouton est disabled (le bouton lance un traitement de quelques secondes et évidemment les utilisateurs pressés aiment appuyer sur le bouton plein de fois pour que ça aille plus vite)
En fouinant sur le net, je suis arrivé à la solution suivante :
J'ai sous-classé Button et surchargé la méthode Render de la façon suivante:
et je set la propriété ClientScriptManager dans le PageLoad.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class MyBtCreate : System.Web.UI.WebControls.Button { private ClientScriptManager csm; public ClientScriptManager ClientScript { set { csm = value; } get { return csm; } } protected override void Render(HtmlTextWriter writer) { this.Attributes["onclick"] = "document.body.style.cursor = 'wait'; this.disabled = true; " + csm.GetPostBackEventReference(this, "", true) + ";"; base.Render(writer); } }
Ca fonctionne bien, à un bémol prêt, la validation causé normalement par le bouton ne fonctionne plus.
J'ai 4 champs obligatoires et 4 contrôles RequiredFieldValidator qui vont avec, le clic sur le bouton les ignore depuis cette modification.
Je pensais qu'en mettant "true" en 3ème argument à mon GetPostBackEventReference() ça enclencherait la validation mais je ne suis pas sur d'avoir compris de quelle validation on parle ici.
Quelqu'un peut-il éclairer ma lanterne ?
Merci d'avance
Partager