Bonjour.
Voilà, mon problème est lié à l'exécution d'un script Javascript depuis un code Behind. J'ai donc utilisé RegisterStartupScript.
Mes WebForms sont organisées de la sorte :
J'ai un UpdatePanel contenant une textBox et un Timer qui à chaque Tick agit sur d'autres controles.
Ainsi, à chaque Tick, ma TextBox perd le focus, ce qui est gênant. Donc, quand j'ai terminé mon traitement, à la fin de la méthode évènement Tick, je rend le focus à ma TextBox. Or bien évidemment, le curseur se retrouve en première position. Je souhaite donc le remettre à la fin du contenu de la TextBox. D'où le script Javascript que je souhaite exécuter de façon à remettre le curseur à la fin (problème déjà traité dans ce forum).
Ainsi, après avoir rendu le focus à ma TextBox, j'exécute un script Javascript envoyé au client grâce au RegisterStartupScript.
Voici la méthode Tick du timer écrite dans le fichier.aspx.cs:
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 //this function is called at each tick of the timer //it checks if the text written in the texBox changed, and //if it does, it looks for suggested sentences which contain //the words written in the textBox. //If at least one sentence exists, it displays the suggestedBox //containing this/these sentences for suggesting protected void Timer1_Tick1(object sender, EventArgs e) { string script = "SetCursorToTextEnd(" + txtBox.ID + ");"; //..................................................... //Traitements relatifs aux autres contoles //..................................................... //On rend le focus a la textBox et on replace le curseur txtBox.Focus(); ScriptManager.RegisterStartupScript(this, GetType(), "placeCursor", script, true); }
Résultat, ça fonctionne sous Firefox, mais sous IE et Opera, le curseur n'est pas replacé. La console d'erreur m'indique ce message :
Semblerait que l'ID ne soit pas reconnu (alors que l'ID de ma textBox est bien 'txtBox').
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 name : ReferenceError message : Statement on line 1: Undefined variable: txtBox Backtrace : SetCursorToTextEnd(txtBox);
J'avais pensé que c'était peut-être lié à mes paramètres lors de l'appel de RegisterStartupScript. Je mets 'this' en premier paramètre, alors que le controle textBox est déclaré dans le fichier .aspx...sans trop de certitude ...
Merci d'avance.
Partager