bonjour ,
je souhaiterais declarer un array de Textbox mais je voudrais que ces variable soit visible partout donc je pensais les declarer en session . est ce possible ?
merci d'avance
bonjour ,
je souhaiterais declarer un array de Textbox mais je voudrais que ces variable soit visible partout donc je pensais les declarer en session . est ce possible ?
merci d'avance
tu peux mettre ce que tu veux dans une variable de session, cependant y mettre un tableau de TextBox, je vois pas l'intéret !! pourquoi ne pas juste y mettre les valeurs à afficher dans les textbox ??
Remarque : mieux vaut mettre le moins de chose possible en session, c'est plutot gourmand en mémoire
Tu peux mettre un arraylist (composé de ce que tu veux en terme de type de données) dans la session.Envoyé par dyree
Mais c'est quoi un array de Textbox ?
merci pour vos reponse![]()
ce que j'ai pour le moment , c'est :
dim champ_info(30) as textbox
For i=1 To 30
champ_info(i)= new textbox
champ_info(i).text = ""
next i
l'idée ce que je souhaiterai que apres que l'utilisateur ai rentré des valeurs dans les textbox, je puisse men resservir dans une autre fonction.
d'ou le besoin de session non ?
car la porté de champ_info(i) est restreinte par la boucle non ?
Si l'autrre fonction est sur la même page, il te suffit de déclarer champ_info au niveau de la page (et pas au niveau de la boucle).
Si ta fonction est dans une autre page, ben tu redéclare champ_info. Vu que tu connais la taille de ton tableau (30) et la valeur a mettre dans les textbox (""), ben pourquoi mettre en session ça alors que tu peux le refaire ailleurs ?? pas de données dynamique, que du dur.
ok je via essayer ca.
il ne faut pas preter attention a la valeur "", je l'avais juste mis la au debut pour initialiser car je croyais avoir un probleme. je ne connais pas par avance ni le contenue ni la taille mais je peux la majorer ( par 30 )
ok jai donc une page comme ceci
dim champ_info(30) as textbox
.
.
.
Function x
for i = 1 to 30
champ_info(i) = new textbox
c.Controls.Add(champ_info(i))
next i
end function
.
.
Function y
for i = 1 to 30
response.write(champ_info(i).text)
next i
end function
or je devrai declarer chacun des textbox(i) comme un textbox, et si je fai ca je perd leur valeur, pourtant jai bien declare textbox(30) en haut . Qqun pourrait il m'aider pliz ?
function X est appelé au premier chargement de ta page (page_load) et et function Y lors d'un PostBack, c'est ça ??
function X est appelé lors d'un appuie sur un bouton A
function X fait apparaitre un formulaire de textbox
une fois que le user a rempli, il clique sur le bouton update qui appelle la fonction
Y
Dans ce cas, ta fonction Y devrait plus ressembler à ceci :
Ca c'est le cas ou tu n'as pas d'autres textbox sur ta pages que celles générées automatiquement. Sinon, il te faut faire un test pour savoir su la textbox txtb est une des textbox de ton tableau..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 foreach(Control oC in this.Controls) { TextBox txtb = oC as TextBox; if (txtb != null) { string value = txtb.Text; } }
PS : pour transformer ce code en VB.Net si tu lis pas le C# : Convertisseur
je vais essayer
pour info , le convertisseur ne fonctionne pas , en tout cas pas lorsque l'on fait un copier coller, il semble quil prenne des balises caché en meme temps.
je suis quand meme un peu triste qu'on soit obliger de faire quelquechose de ce style alors que je voudrais juste que mes varaible soit visible partout sur ma page -.-
mais c'est le cas !! Tes variables sont visibles partout dans la page. Mais là tu fais un amalgame avec le fait ques les pages ASPX soient StateLess. C'est à dire que tes variables sur ta pages ne maintiennent pas leur valeur entre chaque postback. Mais leur portée est la même.
ok
merci , je vai reflechir au moyen le plus logique.
le probleme dans ton foreach, c'est que les textbox sont ajoutés a
c.Controls.Add(champ_info(i)) et C est un tablecell ( je crée un tableau puis jinsere dedans des textbox ) mais de la meme maniere, lors de l'appuie du bouton ce dernier ne garde pas sa valeur, et je ne peux pas utiliser une boucle du type
dim test as textbox
for each test in c.controls
puisqu' il ne voit pas c![]()
breeeef je tourne un peu en rond![]()
Et pourquoi tu n'utilise pas un control Repeater pour y mettre tes TexBox ? comme ça, les valeurs seront gardées d'un postback à l'autre ??
je vias essayer par la.
mais n'aurais je pas le meme probleme ?
je vais creer un repeater sur ma page
le remplir dynamiquement par la function X par des textbox
recuperer les valeurs des textbox par la fonction y
je voudrai ajouter directement a un arraylist qui constituerai la source de mon repeater les labels et des textbox
j'ai pour le moment fait cela
Dim values As New ArrayList()
For i=1 To ds.tables("datestest").Columns.Count-1
values.Add(New textbox())
next i
Repeater1.DataSource = values
Repeater1.DataBind()
mais comment faire pour les labels, sachant que je veu pouvoir leur rentrer une valeur ?
tu pars pas comme il faut.
Tu doit cr&éer un repeater et y mettre dans le itemtemplate un label et un textbox.
Ensuite, tu créer ta collection contenant le text du label et la valeur du textbox (je te conseil de passer par une collection d'objets). Puis tu bind cette liste à ton repeater.
Exemple :
N'oubli pas de spécifié dans ton repeater (coté aspx) ce que tu veut afficher dans le label et dans la textbox
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 public class MonObjet { public string Label; // passe par des propriétés plutot, là c juste pour te donner une idée public string Valeur; } ArrayList monArray = new ArrayList(); for(inti=0 ; i<30 ; i++) { monObjet obj = new MonObjet(); monObjet.Valeur = "valeur_textbox"; monObjet.Label = "valeurLabel"; monArray.Add(monObjet); } Repeater1.DataSrouce = monArray; Repeater1.DataBind();
tres bien , jai crée ma class, je lui ai fiat contenir un label et un textbox
public class MonObjet
public champ_gauche as label
public champ_droite as textbox
end class
dans ma fonction
dim monArray as new ArrayList()
for i=1 to ds.tables("datestest").Columns.Count-1
dim obj as new monObjet
obj.champ_gauche.text=ds.tables("datestest").Columns(i).ColumnName
obj.champ_droite.text = ""
monArray.Add(obj)
next i
Repeater1.DataSource = monArray
Repeater1.DataBind()
mais je dois encore avoir un probleme de porté car obj.champ_gauche.text ne peut prendre une valeur, et j'obtiens le message d'erreur suivant
Object reference not set to an instance of an object
mea culpa , je repars sur ton exemple en rajoutant le label et le textbox dans la partie aspx
Partager