Ajout d'un usercontrol à partir du code behind

Résolu
gatita_dev Messages postés 135 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 5 février 2008 - 8 déc. 2006 à 11:07
gatita_dev Messages postés 135 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 5 février 2008 - 11 déc. 2006 à 11:51
Bonjour
comme le dit le titre je veux pouvoir ajouter un control utilisateur dans une page aspx à partir du code behind
j'ai fait ce code pour affecter une page à un

'**********************************************
Dim writer AsNew StringWriter
Server.Execute("test.aspx", writer)
Response.Write
" & writer.ToString & "
")
'**********************************************

et je veux faire de même avec mon control mais je sais pas comment procéder
Merci pour votre aide

5 réponses

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
9 déc. 2006 à 10:21
Bonjour,
marche aussi :
dim monControl as MonUserControl=LoadControl("MonCheminRelatif/MonUserControl.ascx")
puis chargement dans un panel ou placeholder
là, on peut, il me semble, le mettre où on veut(à vérifier !)
@+G
3
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
8 déc. 2006 à 20:04
Salut,

1)  arg, tu fais de l'ASP.NET là !! pas de l'ASP3 :p ! Donc l'utilisation  de Response.Write est à proscrire absolument !
Pour écrire du texte (HTML ou non) dans ta page, utilise le control Label (qui va afficher le contenu dans un ) ou le control Literal (qui lui va renvoyé directement le contenu de sa propriété .Text).

2) Toujours pareil, en ASP.NET, le Server.Execute() de l'ASP ne doit absolument pas être utilisé (surtout pas pour une page aspx, et non plus pour un control utilisateur d'ailleurs)
Utilises des UserControls, ".ascx" avec une clause register

Si tu veux ajouter dynamiquement un UserControl, rajoute dans ta page un PlaceHolder, et ajoute dynamiquement le controle dedans :

Dim monControl As New MonUserControl()
MonPlaceHolder.Controls.Add(monControl)

3) Attention : tous ces ajouts de contrôles doivent être fait dans le Page_Init, et n'oublie pas d'ajouter en haut de ta page .aspx ou tu utilises ton UserControl une directive Register.

Je te conseille quand même de réviser les bases d'ASP.NET : ça a l'air pareil qu'ASP (ou php, ou autres langages web interprétés), mais il y a certaines choses obsolètes à éviter...

A++

<hr width="100%" size="2" />Nurgle(Antoine) - MSP
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
9 déc. 2006 à 13:07
Arf, effectivement SuperBouly, mon extrait de code est pour les CustomControls, pas pour les UserControls... (je critique, et c'est moi qui fait une magnifique erreur assez bête...lol)
Donc, gatita_dev, utilises plutôt, pour charger un UserControl, ce que vient de te donner SuperBouly

A++

<hr width="100%" size="2" />Nurgle(Antoine) - MSP
0
gatita_dev Messages postés 135 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 5 février 2008
11 déc. 2006 à 10:19
oui en effet c'est ce que j'ai fait mais j'arrive pas à placer le placeholder dynamiquement là ou je veux, j'ai placé mes div en utilisant une feuille de style et le htmlgenericcontrol mais j'arrive pas à placé le place holder dans une div, il s'affiche en bas des div.
Est ce que je dois absolument définir mes div et mon placeholder avant de passer au code behind??? ou il y a une autre solution qui m'échape
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gatita_dev Messages postés 135 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 5 février 2008
11 déc. 2006 à 11:51
Enfin j'ai fait comme cela mais je veux juste savoir si ça marche avec les normes asp.net:
 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim myControl As UserControl = LoadControl("_myControl.ascx")
        Dim menu, contenu, bandeau, pied_page As New HtmlGenericControl
        bandeau.TagName = "div"
        menu.TagName = "div"
        contenu.TagName = "div"
        pied_page.TagName = "div"
        bandeau.ID = "bandeau"
        menu.ID = "menu"
        contenu.ID = "contenu"
        pied_page.ID = "pied_page"
        contenu.Controls.Add(myControl)
        Page.Controls.Add(bandeau)
        Page.Controls.Add(menu)
        Page.Controls.Add(contenu)
        Page.Controls.Add(pied_page)
    End Sub
J'ai pas utilisé le placeHolder puisque ça fonctionne sans, et j'ai pas ajouter le control dans le page_init.
si c'est pas comme ça que je dois faire merci de me rectifier
Bonne journée
0
Rejoignez-nous