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
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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 ?
Nous tenir au courant lorsqu'on fait l'effort de vous répondre...
trop rapide le Guitoux1
Nous tenir au courant lorsqu'on fait l'effort de vous répondre...
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 ?
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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 )
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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 ?
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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 -.-
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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 ?
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
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
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
mea culpa , je repars sur ton exemple en rajoutant le label et le textbox dans la partie aspx
"One should never increase, beyond what is necessary,
the number of entities required to explain anything."
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager