Bonjour !
J'ai un formulaire et, dans un soucis de lisibilité, je veux que la textbox active soit mise en évidence. Pour cela il faut donc que je définisse le comportement javascript pour les évènements onBlur et onFocus. Bon, rien de bien compliqué.
Mais comme je ne vais pas m'amuser à faire ça pour chaque textbox, je fais simplement une fonction récursive dans le CodeBehind qui va me faire ça :
Cette fonction n'a rien de bien compliqué, mais ça ne fait strictement rien. En fait, elle ne semble même pas parcourir les contrôles de la page, puisque lorsque je regarde les contrôles passés en revue, je n'ai que le master form et un literalcontrol.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 //Va servir à surligner le champ texte courant private string focusTxtBoxScript = "this.className='textbox_focus';"; private string blurTxtBoxScript = "this.className='textbox_normal';"; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ajouterEvtJS(Page.Controls); } } // Parcourt récursivement les contrôles et // ajoute les évènements javascript suivants : // Onfocus sur les textbox > la textbox est surlignée // Onblur sur les textbox > la textbox est remise à la normale private void ajouterEvtJS(ControlCollection controls) { foreach (Control c in controls) { if (c is TextBox) { ((TextBox)c).Attributes.Add("onfocus", this.focusTxtBoxScript); ((TextBox)c).Attributes.Add("onblur", this.blurTxtBoxScript); } else { if (c.HasControls()) ajouterEvtJS(c.Controls); else return; } } }
A noter que quand j'appelle le "addatribute" directement sur une textbox, pas de problème. Cette page possède aussi une Master page.
Quelqu'un a-t-il une idée de là où ça peut venir ? Ou bien une idée pour faire la chose autrement, s'il existe une meilleure façon ?
Merci beaucoup !
Partager