Comment donner des noms dynamiques aux form controls ?

Résolu
cycofred0 Messages postés 6 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 11 décembre 2007 - 26 oct. 2006 à 10:34
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 26 oct. 2006 à 12:29
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

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
26 oct. 2006 à 10:48
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)
3
cycofred0 Messages postés 6 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 11 décembre 2007
26 oct. 2006 à 11:45
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
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
26 oct. 2006 à 12:29
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)
0
Rejoignez-nous