Tableau généré dynamiquement, accéder aux controles

[Résolu]
Signaler
Messages postés
46
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
17 juillet 2007
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjours.

Alors j'ai créé un tableau, je le remplis en fonction d'un select.
Dans chaque ligne je met diverse chose, label, textbox, bouton.

J'ai réussi a générer un événement handles lorsqu'on click sur le bouton (en m'inspirant d'une réponse de cyril/jesusonline à une autre question :p).

J'arrive a récupérer la ligne du tableau sur laquel le bouton à été cliquer.
(vias l'id du bouton)

Jusque la ca va ... sauf que même avec le numéros de ligne et le numéros de cellule,
(j'ai qu'une cellule par ligne ca va il a pas été trop dure à trouver :p).
J'arrive pas à accéder au controle (textbox, label).

Je pensais que ca marchais un peu comme les data set.
(dataset.tables("nom_table").rows(index).("nom") )
Mais ca a pas l'air.
Quelqu'un aurait une astuce pour accéder à mes controle?

Voici mon code si ca vous intéresse:

(page load)
(...)


Dim n, m
As
Integer


n = 0


m = ds.Tables("ajout").Rows().Count



Do
While n < m



Dim cellule
As
New TableCell



Dim ligne
As
New TableRow



Dim label1
As
New Label


label1.Text = "test"


cellule.Controls.Add(label1)


cellule.Controls.Add(label2)



If (ds.Tables("ajout").Rows(n)("Statut") = "2a"
And Session("niveau") = 2)
Or (ds.Tables("ajout").Rows(n)("Statut") = "1a"
And Session("niveau") = 1)
Then



Dim tbox =
New TextBox


tbox.Visible =
False


tbox.Text = "Rentrer un commentaire ici."


cellule.Controls.Add(tbox)



Dim bouton
As
New Button



Dim chaine_bouton
As
String


chaine_bouton = n


chaine_bouton = "bouton" + chaine_bouton


bouton.ID = chaine_bouton


bouton.Text = "Editer"



AddHandler bouton.Click,
AddressOf bouton_click





cellule.Controls.Add(bouton)



End
If


ligne.Cells.Add(cellule)


Table2.Rows.Add(ligne)


n = n + 1



Loop

end sub


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



Dim n
As

Integer


n = Left(sender.id, Len(sender.id) - 6) ' bouton : 6 lettre d'où le six.



End
Sub

6 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Arg, j'aime pas faire ca, c'est chiant



Donc, il me semble qu'il suffit de mettre un ID a ton controle et puis
apres tu le trouve en faisant page.findcontrol("id") ou
container.findcontrol("id") avec container qui est l'element parent de
ton controle.



Normalement ca marche comme ca. Le problème qui peut apparaitre c'est
que vu que tu boucles tu auras toujours la meme id, et ca asp.net va
pas aimer et va donc faire sa soupe tu peux rajouter un id "dynamique" tu lui rajoutes i à la fin par exemple, et peut etre que ca passera mais encore pas sur.



J'espere t'avoir un peu aidé, je regarderais plus en détail ce soir si
je trouve le temps et si tu n'as pas trouvé de solution avant
évidemment :)


<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
findcontrol te retourne un control, pour avoir son bon type il faut le caster



(textbox)findcontrol("blablabla") en C# ou ctype(findcontrol("blablabla"),textbox) en VB



pour ce qui est de tes radios buttons, ca me semble bizarre qu'il ne veuille pas. Ca te met quoi comme erreur ?

<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr
Messages postés
46
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
17 juillet 2007

J'ai déjà rajouté un ID dynamique pour le bouton.
Je vais tester en mettant un id à mes label/textbox et utilisé ton find control on verra bien .
Messages postés
46
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Bon ben ca marche nickel, par contre j'ai pas certaines propriétés (genre texte) ce qui peut être génant .

(tant que j'y suis, j'ai essayé de mettre des radios boutons dans mon tableau ... mais il veut pas , c'est possible d'en mettre ou pas )
Messages postés
46
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
17 juillet 2007

Pour les radios boutons ben ... c'est normal que ca te semblait bizzard vu qu'en fait ca marche.
(par contre je capte pas la semaine derniere il faisait comme si il connaissait pas le type radio bouton et la ... nickel )

Et pour le cast ca marche nickel aussi .
(je savais pas qu'on pouvais caster en vb ca marche aussi pour le vb pas . net ?)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
pour VB non .net j'en sais rien, j'ai appris la prog avec vb.net mais il me semble que c'est aussi possible sauf que la notion d'objet et beaucoup moins presente.



Je crois qu'il y a aussi les fonctions Cint, Cstr etc... mais pas sur

<hr>

Cyril - http://Hoshimi.CodeS-SourceS.fr