Comment donner des noms dynamiques aux form controls ?

[Résolu]
Signaler
Messages postés
6
Date d'inscription
lundi 28 août 2006
Statut
Membre
Dernière intervention
11 décembre 2007
-
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
-
Bonjour à tous,

Je cherche à générer en ASP.NET des user controls dont le nombre n'est pas connu à l'avance (car fonction de valeurs dans SGBD). Question : est-il possible de générer ces controls en leur donnant comme ID les valeurs contenues dans cette base ?

Exemple : une base avec une table contenant comme valeurs : titi / grosminet / donald.
Je souhaiterais générer 3 controles :

<asp:DropDownList
ID="titi"
runat="server"></asp:DropDownList>
grosminet"
runat="server">
<asp:DropDownListID="donald"runat="server"></asp:DropDownList>

sans connaitre à l'avance le nombre de ces ouistitis, ni leur nom...

J'ai créé un datareader, mais impossible d'écrire :
<%MyDataReader("Nom")%>"
runat="server">

Existe t'il une autre solution ?

Merci

3 réponses

Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Salut,

Mets un PlaceHolder à l'endroit où tu veux ajouter dynamiquement tes contrôles, et fait le via le code.
Exemple, dans une boucle :

Dim MaDrop As New DropDownList()
MaDrop.ID = "cequejeveux"
MonPlaceHolder.Controls.Add(MaDrop)

Et comme ça tu choisis l'ID en fonction de ta table, ou de ce que tu veux...
Attention : tous les ajouts dynamiques de contrôles doivent se faire dans le Page_Init !

Bonne journée,
A++

<hr width="100%" size="2" />Nurgle(Antoine)
Messages postés
6
Date d'inscription
lundi 28 août 2006
Statut
Membre
Dernière intervention
11 décembre 2007

Merci bcp.

Le prob arrive quand les controles ne doivent pas être au même endroit de la page (dans des "<td>" avec libellés, etc...) :
on se retrouve avec un nombre dynamique de Placeholders à créer, pas drole...

Je crois que je vais le faire en bon vieil ASP avec des controls HTML + javascript généré à la volée
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Bah non, aucun problème : Tu ajoutes à ta page un System.Web.UI.HtmlControls.HtmlTable, et tu génères aussi par code les Rows de ton tableau html.

Dans ta boucle :
- Tu ajoute une ligne à la HtmlTable.
- Tu fais un .Controls.Add() sur une cellule de la ligne (au lieu de le faire sur un PlaceHolder).

Et voilà

<hr width="100%" size="2" />Nurgle(Antoine)