Declarer une variable en global dans une procedure

cs_lucier Messages postés 11 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 mars 2007 - 17 mars 2004 à 12:21
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 18 mars 2004 à 18:39
Bonjour, j'aimerai déclarer une textbox en global dans ma procedure page_load. (pour la reutiliser dans une autre procedure...)
Est ce que quelqu'un sait comment on peut le faire?
merci d'avance
lu

11 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mars 2004 à 13:29
J'ai pas compris ce que tu veux faire.
Je comprend pas ce que t'entend pas declarer une textbox en global dans la procédure page_load

Tu travailles en code_behind ? tu genere ta textbox dans le code ? (donc elle existe pas dans le HTML)
J'ai besoin d'un peu de précision stp

Cyril (Alias Jesusonline)
0
cs_lucier Messages postés 11 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 mars 2007
17 mars 2004 à 13:50
en fait, je travaille en vb net coté serveur. Je crée dynamiquement ma textbox dans le page_load et je la déclare aussi à ce niveau là.
Le problème est que je ne peux utiliser cette textbox que dans la procédure page_load et que je voudrais l'utiliser dans d'autres procédure...
j'espere avoir été assez clair....

merci,
lu
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mars 2004 à 14:22
Ok j'ai bien compris
:) une petite remarque en passant, c'est marrant de voir que certaines questions reviennent toujours au meme moments :) j'ai vu le thème de cette question revenir plusieurs fois cette semaine :)

Quand tu dis utiliser ton textbox, tu veux dire recupere les valeurs ? apres un click sur un bouton ?
Donc tu peux faire ceci comme cela :


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim TxtBox As New TextBox
TxtBox.AutoPostBack = True
PlaceHolder1.Controls.Add(TxtBox)
AddHandler TxtBox.TextChanged, AddressOf TxtBox_Command
End Sub

Private Sub TxtBox_Command(ByVal sender As System.Object, ByVal e As System.EventArgs)

Dim LeCheckbox As New TextBox
LeCheckbox = CType(sender, TextBox)

Response.Write(LeCheckbox.Text)

End Sub



Je pense que ca devrait correspondre à tes attentes sinon n'hesites pas à me le dire :)

A+

Cyril (Alias Jesusonline)
0
cs_lucier Messages postés 11 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 mars 2007
17 mars 2004 à 15:18
En fait, ca ne correspond pas vraiment à ce que je veux :
* d'une part, je ne peux pas mettre ma textbox dans un placeholder car elle est deja dans une table
* ensuite, je ne veux pas ma valeur au moment du changement de valeur mais au moment d'un click sur un bouton valider par exemple....

Voila, j'espere que tu auras compris... :-)

a+ lu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mars 2004 à 15:26
que ce soit dans un placeholder ou dans autre chose ca change rien au problème :)

Par contre pour le deuxieme point c'est un peu plus compliqué, c'est surtout radicalement different, il faut qu'au click du bouton tu recherches ton textbox, et une fois que tu l'as trouvé tu fais comme ca :

Dim LeTextBox As New TextBox
LeTextBox = CType(sender, TextBox)

Response.Write(LeTextBox.Text)

je me rappel plus par contre comment cherché ton textbox.

Bon courage

Cyril (Alias Jesusonline)
0
cs_lucier Messages postés 11 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 mars 2007
17 mars 2004 à 15:37
Mais c'est justement ca que je n'arrive pas à faire, chercher la textbox.... sniff.....
merci quand meme lol
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mars 2004 à 15:53
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim TxtBox As New TextBox
TxtBox.ID = "TonTextbox"
TxtBox.AutoPostBack = True
PlaceHolder1.Controls.Add(TxtBox)
AddHandler TxtBox.TextChanged, AddressOf TxtBox_Command

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim LeTextBox As New TextBox
LeTextBox = CType(Page.FindControl("TonTextbox"), TextBox)

Response.Write(LeTextBox.Text)

End Sub

Fallait juste se rappeller de page.findcontrol

Je Pense que ce bout de code te sera utile

@+

Cyril (Alias Jesusonline)
0
cs_lucier Messages postés 11 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 mars 2007
17 mars 2004 à 16:13
J'ai essayé de faire ce que tu m'avait dit, mais j'ai l'impression qu'il ne trouve pas ma textbox...
voila l'erreur qu'il me met à l'execution :

*******************
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

Erreur source:

Ligne 272 : LeTextBox = CType(Page.FindControl("txtorga"), TextBox)
Ligne 273 :
Ligne 274 : Response.Write(LeTextBox.Text)
Ligne 275 :
Ligne 276 : 'msgbox(txtorga.text)

**********************

Merci de ton aide
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mars 2004 à 17:24
C'est bizarre car chez moi ca marche, mais j'ai testé ce code sur une page et je n'ai que ca, c'est peut etre pour ca que ca marche pas chez toi.

Une erreur possible : tu n'a pas reinstancié leTextbox (Letextbox = new ...) ou tu n'as pas mis le bon ID lors de la création ca me marque la meme erreur si je change le nom de l'id, mais ca peut etre à cause que tu as plusieurs textbox generé, donc tu ne peux pas mettre plusieurs fois la meme idée regarde ton code HTML moi j'ai ca : si t'as autre chose la place de ID (ou name) c'est que tu dois avoir plusieurs textbox genere pour cela il faut que tu incrementes ton ID

Apres tu fais une recherche sur l'element que tu veux.
Par contre le problème c'est que c'est pas tres propre, car il faut soit faire une boucle sur tous les id soit selectionner seulement les id qu'on veut capturer, et je pense que ce systeme n'est pas tres evolutif, donc tu m'as dit que tu étais dans un tableau, je pense qu'il y a possibilité de faire un findcontrol dans le tableau etc... C'est encore pas tres clair dans ma tete, mais je propose une source qd ce sera plus clair :-p

Mais pour conclure ca doit marcher si tu as un seul ID par textbox

@+

Cyril (Alias Jesusonline)
0
cs_lucier Messages postés 11 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 mars 2007
18 mars 2004 à 10:17
cherche plus, j'ai changé de solution, en fait, je vais faire un script client qui recupere ce qu'il y a dans mes textbox et je fais une redirection avec en paramètre mes valeurs pour pouvoir les recuperer coté serveur....
je sais pas si tu as tout compris mais ca devrait marcher....

merci pour ton aide
lu
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 mars 2004 à 18:39
j'ai mis une source qui devrait t'aider pour ce que tu veux faire normalement ca devrait marcher, si tu veux montre moi ton code et je te dit ce qui va pas, ce sera plus simple et plus compatible (entre navigateur) que d'ecrire soit meme un script client

@+

Cyril (Alias Jesusonline)
0
Rejoignez-nous