GENERER DES CONTROLES DYNAMIQUEMENT ET RECUPERER LEURS EVENEMENT ET LEURS VALEUR
cs_arcollet
Messages postés31Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention13 avril 2008
-
15 juin 2004 à 13:00
cs_maripol
Messages postés2Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention20 septembre 2010
-
11 nov. 2008 à 17:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_maripol
Messages postés2Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention20 septembre 2010 11 nov. 2008 à 17:45
ce code est une pure merveille mais ce que je voudrais moi c'est:
afficher les questions et les proprositions de reponse d'un questionnaire qui figure dans une bd oracle 10g.Les propositions sont en faite des checkbox qui une fois coches doivent etre comparer a la bonne reponse qui elle aussi figure ds la bd.Je t'en suppli repond moi
BoueK
Messages postés1Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention 6 juin 2011 7 mars 2008 à 16:18
Merci pour ce code qui m'a été très utiles :)
nindy13
Messages postés7Date d'inscriptionmercredi 24 octobre 2007StatutMembreDernière intervention20 décembre 2007 19 nov. 2007 à 16:15
Bonjour,
J'étais en plain déséspoir dans mon projet quand j'ai trouvé ton code ! ton code m'a bien aidé et avec les commentaires des autres personnes j'ai trouvé exactement ce qu'il me fallait !
J'ai enfin débloqué mon code ! (c'est mon chef qui va être content !!)
Merci beaucoup
webtof
Messages postés5Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention29 janvier 2010 21 mai 2007 à 13:24
J'ai trouvé !
Alors en cherchant, je me suis aperçu que mon problème venait de l'utilisation d'un contrôle Table
et en multipliant la petite fonction donnée au dessus, j'ai retrouvé mes controles dans des controles Row et Cell de mon Table.
Donc, j'ai modifié la création de mes controles dynamiques pour les mettre dans un place holder avec des LiteralControl pour générer mon tableau de mise en page et j'ai viré le controle Table.
webtof
Messages postés5Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention29 janvier 2010 21 mai 2007 à 12:27
Alors en fait, lorsque je liste mes controles :
' TableauTransport est le Control Table où je range mes controles dynamiques
For Each ctrl In TableauTransports.Controls
Response.Write("toto : " & ctrl.ID & "
")
Next
J'ai bien en résultat 8 lignes avec toto : qui s'affichent mais derrière, rien. Comme si dans la page, les controles n'avaient pas de Nom (quand je regarde le source, il ont bien un nom, et à la création, je donne bien un ID (je peux meme l'afficher).
Je suis vraiment perdu ...
Merci.
webtof
Messages postés5Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention29 janvier 2010 21 mai 2007 à 11:42
Bonjour,
Je cherche depuis plusieurs jours à récupérer les valeurs de mes textbox générés dynamiquement.
Je les crée dans Page_Init mais lorsque je fais le FindControl il ne les trouve pas.
Le Find Control se fait dans le On_click d'un bouton.
Je ne comprend pas pourquoi le control TextBox n'existe pas lors du lancement de la sub OnClick.
merci pour l'aide.
fredo_lefran
Messages postés2Date d'inscriptionmercredi 5 juillet 2006StatutMembreDernière intervention21 décembre 2006 6 juil. 2006 à 16:03
Bonjour,
j'ai vu ton bout de code.
J'essaie de faire la même chose et je ne récupère aucun control. En fait quand je clique sur le bouton, je n'accède a aucun control!
Quand je fais le code qui suit après la creation des textbox :
TextBox test = new TextBox();
test = (TextBox)Page.FindControl("accountnumber");
Response.Write("kljhkj"+test.Text + "");
il trouve bien mais si je fais le même code dans le click de mon bouton il ne le trouve pas.
Aurais-tu une idée?
merci d'avance
odenis59
Messages postés7Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention12 mars 2006 28 févr. 2006 à 10:02
ouep mais cela retire un peu l'interet de la création dynamique ..?
Imaginons que je cree 100 boutons, puis au post suivant j'en ai plus besoin que de 5 quel est l'interet d'en creer 95 'pour rien' cela a quand meme des implications sur la performance.
d'autant plus que je vais devoir creer autant de bouton à chaque post que de max de boutons creer au cours de la vie de la page.
ps : cela ne remet pas en cause la qualite de ton source ;)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 28 févr. 2006 à 09:54
Il n'y a rien qui me semble impossible, dans le render de la page tu fais un tonbutton.visible = false :)
odenis59
Messages postés7Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention12 mars 2006 28 févr. 2006 à 09:48
Bonjour,
je confirme bien ton post sur la methode de gestion des controles dynamiques de Trenaud.
toutefois me voila face à un probleme : comment faire si ma premiere page contient 5 boutons , recupere la valeur du bouton cliqué, mais aussi dans le meme post renvoyer la paga aux client sans le bouton cliqué (donc 4 boutons).
cela me semble pour l'instant impossible, car comment dans le meme post a la fois creer un bouton et recuperer l' event et le supprimer ?
cs_trenaud
Messages postés2Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention30 janvier 2006 30 janv. 2006 à 12:04
Réponse à moi-même...
En fait, je n'avais pas compris qu'il fallais regénérer les contrôles dynamiques, même dans le cas d'un postback.
Donc si je reprends l'ensemble de la chaine client/serveur, voici ce qui se passe :
1° Premier appel d'une page : génération des contrôles dynamiques
2° modification des valeurs des champs dynamiques côté client
3° le client poste le formulaire
4° le serveur regénère la page, avec recréation des contrôles dynamiques à leurs valeurs initiales
5° le serveur affecte automatiquement toutes les valeurs de tous les champs renvoyés par le client (effectué après l'évennement "PAGE_LOAD").
Si au niveau du point 5 les contrôles dynamiques n'ont pas été recréés, forcément le serveur ne peut pas leur affecter les valeurs renvoyées par le client... et donc on n'a pas accès à ces contrôles puisqu'ils n'existent plus...
J'avais pourtant épluché toutes les docs disponibles sur la génération des pages web en ASPX, mais il semble que cette particularité n'y soit pas expliquée. J'espère que cette petite explication servira à d'autres.
Cordialement, Tristan.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 30 janv. 2006 à 11:27
Bonjour,
il faut rajouter tes controles dans le init de la page :)
cs_trenaud
Messages postés2Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention30 janvier 2006 30 janv. 2006 à 11:20
Bonjour,
J'ai étudié le code proposé avec intérêt. Cependant, je souhaiterais faire quelque chose d'un peu différent : plutôt que de renvoyer la valeur d'un contrôle textBox dès qu'il change, je souhaiterai que l'ensemble des valeurs des textbox créés dynamiquement soit renvoyé au serveur par un bouton qui "submit" le formulaire.
Or en faisant comme cela, tout les contrôles créés dynamiquement disparaissent dès que le formulaire est retourné au serveur...
Si quelqu'un a une idée pour résoudre mon problème, je l'en remercie par avance !!
martok
Messages postés31Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention24 juin 2008 23 nov. 2005 à 12:26
Ok je vois.
C'est cool ta source va être un bon point de départ pour mon taf.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 23 nov. 2005 à 10:48
l'évenement textchanged se déclenche ssi la propriété autopostback est à true ce qui est heureusement pas le cas par défaut ... car cela fait un posbtack a chaque fois que le textbox change :s
martok
Messages postés31Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention24 juin 2008 23 nov. 2005 à 10:26
Bonjour,
ton code est intéressant. Par contre j'arrive pas trop à comprendre pourquoi, l'évènement MonTextBox_TextChanged semble ne pas se déclancher.
En tout cas, ta source me dépanne.
Félicitations.
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 6 déc. 2004 à 09:37
N'y a t-il pas moyen de se passer du placeHolder ?
Je cree un composant dans une string et je n'arrive pas à récuperer sa valeur.
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 18 août 2004 à 19:24
Bonjour,
Pourquoi mes textbox créées disparaissent au postback, et refusent donc de rendre l'info que j'ai rentrée ?
Je précise que ma page est faite sous DreamWeaver et que mes textbox sont créées dans le footer d'un datagrid, mais que j'ai essayé dans un PlaceHolder, ça me fait pareil .
Merci pour un tuyau...
seb7272
Messages postés4Date d'inscriptionmardi 16 décembre 2003StatutMembreDernière intervention16 août 2004 16 août 2004 à 15:39
Bonjour,
Ce code fonctionne très bien, il m'a été très utile.
Mais je cherche encore plus :
-->avec un datalist alimenté par base de données.
je voudrais créer des boutons par enregistrement en fonction des données envoyées.
Avez vous une idée ?
Sébastien
cs_arcollet
Messages postés31Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention13 avril 2008 15 juin 2004 à 13:00
Bonjour,
Auriez vous un exemple de ce même code mais dont le radiobuttonlist serai un TemplateColumn intégré à un datagrid dont la source serait un datareader. Comment dans ce cas répercuter la mise à jour d'une telle colonne (TemplateColumn/RadioButtonList) dans la base de donnée.
11 nov. 2008 à 17:45
afficher les questions et les proprositions de reponse d'un questionnaire qui figure dans une bd oracle 10g.Les propositions sont en faite des checkbox qui une fois coches doivent etre comparer a la bonne reponse qui elle aussi figure ds la bd.Je t'en suppli repond moi
7 mars 2008 à 16:18
19 nov. 2007 à 16:15
J'étais en plain déséspoir dans mon projet quand j'ai trouvé ton code ! ton code m'a bien aidé et avec les commentaires des autres personnes j'ai trouvé exactement ce qu'il me fallait !
J'ai enfin débloqué mon code ! (c'est mon chef qui va être content !!)
Merci beaucoup
21 mai 2007 à 13:24
Alors en cherchant, je me suis aperçu que mon problème venait de l'utilisation d'un contrôle Table
et en multipliant la petite fonction donnée au dessus, j'ai retrouvé mes controles dans des controles Row et Cell de mon Table.
Donc, j'ai modifié la création de mes controles dynamiques pour les mettre dans un place holder avec des LiteralControl pour générer mon tableau de mise en page et j'ai viré le controle Table.
21 mai 2007 à 12:27
' TableauTransport est le Control Table où je range mes controles dynamiques
For Each ctrl In TableauTransports.Controls
Response.Write("toto : " & ctrl.ID & "
")
Next
J'ai bien en résultat 8 lignes avec toto : qui s'affichent mais derrière, rien. Comme si dans la page, les controles n'avaient pas de Nom (quand je regarde le source, il ont bien un nom, et à la création, je donne bien un ID (je peux meme l'afficher).
Je suis vraiment perdu ...
Merci.
21 mai 2007 à 11:42
Je cherche depuis plusieurs jours à récupérer les valeurs de mes textbox générés dynamiquement.
Je les crée dans Page_Init mais lorsque je fais le FindControl il ne les trouve pas.
Le Find Control se fait dans le On_click d'un bouton.
Je ne comprend pas pourquoi le control TextBox n'existe pas lors du lancement de la sub OnClick.
merci pour l'aide.
6 juil. 2006 à 16:03
j'ai vu ton bout de code.
J'essaie de faire la même chose et je ne récupère aucun control. En fait quand je clique sur le bouton, je n'accède a aucun control!
Quand je fais le code qui suit après la creation des textbox :
TextBox test = new TextBox();
test = (TextBox)Page.FindControl("accountnumber");
Response.Write("kljhkj"+test.Text + "");
il trouve bien mais si je fais le même code dans le click de mon bouton il ne le trouve pas.
Aurais-tu une idée?
merci d'avance
28 févr. 2006 à 10:02
Imaginons que je cree 100 boutons, puis au post suivant j'en ai plus besoin que de 5 quel est l'interet d'en creer 95 'pour rien' cela a quand meme des implications sur la performance.
d'autant plus que je vais devoir creer autant de bouton à chaque post que de max de boutons creer au cours de la vie de la page.
ps : cela ne remet pas en cause la qualite de ton source ;)
28 févr. 2006 à 09:54
28 févr. 2006 à 09:48
je confirme bien ton post sur la methode de gestion des controles dynamiques de Trenaud.
toutefois me voila face à un probleme : comment faire si ma premiere page contient 5 boutons , recupere la valeur du bouton cliqué, mais aussi dans le meme post renvoyer la paga aux client sans le bouton cliqué (donc 4 boutons).
cela me semble pour l'instant impossible, car comment dans le meme post a la fois creer un bouton et recuperer l' event et le supprimer ?
30 janv. 2006 à 12:04
En fait, je n'avais pas compris qu'il fallais regénérer les contrôles dynamiques, même dans le cas d'un postback.
Donc si je reprends l'ensemble de la chaine client/serveur, voici ce qui se passe :
1° Premier appel d'une page : génération des contrôles dynamiques
2° modification des valeurs des champs dynamiques côté client
3° le client poste le formulaire
4° le serveur regénère la page, avec recréation des contrôles dynamiques à leurs valeurs initiales
5° le serveur affecte automatiquement toutes les valeurs de tous les champs renvoyés par le client (effectué après l'évennement "PAGE_LOAD").
Si au niveau du point 5 les contrôles dynamiques n'ont pas été recréés, forcément le serveur ne peut pas leur affecter les valeurs renvoyées par le client... et donc on n'a pas accès à ces contrôles puisqu'ils n'existent plus...
J'avais pourtant épluché toutes les docs disponibles sur la génération des pages web en ASPX, mais il semble que cette particularité n'y soit pas expliquée. J'espère que cette petite explication servira à d'autres.
Cordialement, Tristan.
30 janv. 2006 à 11:27
il faut rajouter tes controles dans le init de la page :)
30 janv. 2006 à 11:20
J'ai étudié le code proposé avec intérêt. Cependant, je souhaiterais faire quelque chose d'un peu différent : plutôt que de renvoyer la valeur d'un contrôle textBox dès qu'il change, je souhaiterai que l'ensemble des valeurs des textbox créés dynamiquement soit renvoyé au serveur par un bouton qui "submit" le formulaire.
Or en faisant comme cela, tout les contrôles créés dynamiquement disparaissent dès que le formulaire est retourné au serveur...
Si quelqu'un a une idée pour résoudre mon problème, je l'en remercie par avance !!
23 nov. 2005 à 12:26
C'est cool ta source va être un bon point de départ pour mon taf.
23 nov. 2005 à 10:48
23 nov. 2005 à 10:26
ton code est intéressant. Par contre j'arrive pas trop à comprendre pourquoi, l'évènement MonTextBox_TextChanged semble ne pas se déclancher.
En tout cas, ta source me dépanne.
Félicitations.
6 déc. 2004 à 09:37
Je cree un composant dans une string et je n'arrive pas à récuperer sa valeur.
18 août 2004 à 19:24
Pourquoi mes textbox créées disparaissent au postback, et refusent donc de rendre l'info que j'ai rentrée ?
Je précise que ma page est faite sous DreamWeaver et que mes textbox sont créées dans le footer d'un datagrid, mais que j'ai essayé dans un PlaceHolder, ça me fait pareil .
Merci pour un tuyau...
16 août 2004 à 15:39
Ce code fonctionne très bien, il m'a été très utile.
Mais je cherche encore plus :
-->avec un datalist alimenté par base de données.
je voudrais créer des boutons par enregistrement en fonction des données envoyées.
Avez vous une idée ?
Sébastien
15 juin 2004 à 13:00
Auriez vous un exemple de ce même code mais dont le radiobuttonlist serai un TemplateColumn intégré à un datagrid dont la source serait un datareader. Comment dans ce cas répercuter la mise à jour d'une telle colonne (TemplateColumn/RadioButtonList) dans la base de donnée.
Merci de votre aide
Denis