RegisterStartupScript et accès à l'ID des controles
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:
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 :
Code:
1 2 3
| name : ReferenceError
message : Statement on line 1: Undefined variable: txtBox
Backtrace : SetCursorToTextEnd(txtBox); |
Semblerait que l'ID ne soit pas reconnu (alors que l'ID de ma textBox est bien '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.