OVH Cloud OVH Cloud

WebUserControl dans un panel de WebForm.

5 réponses
Avatar
Vincent Dartois
Bonjour,

J'ai une page Ascx ( webform ) dans laquelle j'ai un panel.
je nomme cette page "questionnaire"

le but de cette page et d'afficher des questionnaires dans le panel.

j'ai actuellement une page "questionnaire1" qui est en fait un
WebUserControl (ascx) que je souhaiterais affiché dans le panel de mon
webform "questionnaire"

ci ce n'était que ca ce serai facile car il me suffit de faire un drag 'n
drop de l'ascx dans le panel en question, mais voilà comme je vais avoir
plusieurs questionnaires à afficher il faut que je choisisse dynamiquement
quel questionnaire je dois chargé.

Comment puis-je faire celà ?

Merci de votre aide.

Vincent.

====
WinXP Pro Sp2
Visual Studio 2003
Framework 1.1
Vb.net

5 réponses

Avatar
Cactus Corp.
> le but de cette page et d'afficher des questionnaires dans le panel.

j'ai actuellement une page "questionnaire1" qui est en fait un
WebUserControl (ascx) que je souhaiterais affiché dans le panel de mon
webform "questionnaire"

ci ce n'était que ca ce serai facile car il me suffit de faire un drag 'n
drop de l'ascx dans le panel en question, mais voilà comme je vais avoir
plusieurs questionnaires à afficher il faut que je choisisse dynamiquement
quel questionnaire je dois chargé.

Comment puis-je faire celà ?




Bonjour,

--------------------default.aspx--------------------
<asp:Panel id="pnlConteneur" runat="Server"/>

--------------------default.aspx.cs--------------------
protected Panel pnlConteneur;

private void Page_Load(blablabla)
{
//identifier le contrôle à charger dynamiquement
string nomControle = "moncontrole.ascx";
if(valeurFictive = 12)
nomControle = "monautrecontrole.ascx";

//charger le contrôle
pnlConteneur.Controls.Add(this.Page.LoadControl(nomControle));
}


En espèrant que cela réponde à votre question =)

Antonio
Avatar
Vincent Dartois
Merci !
en fait quand j'ai fait mes tests il me manquait le page.LoadControl



"Cactus Corp." a écrit dans le message de news:
%237DvN%
le but de cette page et d'afficher des questionnaires dans le panel.

j'ai actuellement une page "questionnaire1" qui est en fait un
WebUserControl (ascx) que je souhaiterais affiché dans le panel de mon
webform "questionnaire"

ci ce n'était que ca ce serai facile car il me suffit de faire un drag 'n
drop de l'ascx dans le panel en question, mais voilà comme je vais avoir
plusieurs questionnaires à afficher il faut que je choisisse
dynamiquement
quel questionnaire je dois chargé.

Comment puis-je faire celà ?




Bonjour,

--------------------default.aspx--------------------
<asp:Panel id="pnlConteneur" runat="Server"/>

--------------------default.aspx.cs--------------------
protected Panel pnlConteneur;

private void Page_Load(blablabla)
{
//identifier le contrôle à charger dynamiquement
string nomControle = "moncontrole.ascx";
if(valeurFictive = 12)
nomControle = "monautrecontrole.ascx";

//charger le contrôle
pnlConteneur.Controls.Add(this.Page.LoadControl(nomControle));
}


En espèrant que cela réponde à votre question =)

Antonio




Avatar
Paul Bacelar
Je pige pas tout mais:
...
nomControle.test = "Message de test"
...

Cela me paraît plus logique, non ?
--
Paul Bacelar

"Vincent Dartois" wrote in message
news:#km8$
Par contre, je ne peux pas transmettre de données aux UserContrôle, je suis
obligé de passé tout par session ?
exemple :

Fichier ascx
======= Public Property test() As String
Get
Return lValTest.Text
End Get
Set(ByVal Value As String)
lValTest.Text = Value
End Set
End Property

Fichier aspx
========= Dim nomControle = "WucQuestionnaireswucQuest1.ascx"
wucQuest1.test = "Message de test" '
Me dis forcément que j'ai pas d'instance
pQualif1.Controls.Add(Me.Page.LoadControl(nomControle))

========== Existe-t-il un autre moyen ?

Merci.



"Cactus Corp." a écrit dans le message de news:
%237DvN%
le but de cette page et d'afficher des questionnaires dans le panel.

j'ai actuellement une page "questionnaire1" qui est en fait un
WebUserControl (ascx) que je souhaiterais affiché dans le panel de mon
webform "questionnaire"

ci ce n'était que ca ce serai facile car il me suffit de faire un drag 'n
drop de l'ascx dans le panel en question, mais voilà comme je vais avoir
plusieurs questionnaires à afficher il faut que je choisisse




dynamiquement
quel questionnaire je dois chargé.

Comment puis-je faire celà ?




Bonjour,

--------------------default.aspx--------------------
<asp:Panel id="pnlConteneur" runat="Server"/>

--------------------default.aspx.cs--------------------
protected Panel pnlConteneur;

private void Page_Load(blablabla)
{
//identifier le contrôle à charger dynamiquement
string nomControle = "moncontrole.ascx";
if(valeurFictive = 12)
nomControle = "monautrecontrole.ascx";

//charger le contrôle
pnlConteneur.Controls.Add(this.Page.LoadControl(nomControle));
}


En espèrant que cela réponde à votre question =)

Antonio




Avatar
Cactus Corp.
Bonjour =)

Le mieux à faire est de créer des propriétés écriture seule ou les deux,
dans votre classe de Page.

Exemple (je code en csharp, alors... pardonnez les erreurs..)

------------default.aspx.vb------------------------
Public ReadOnly Property MonTexte As String
Get
Return this._montexte;
End Get
End Property


-----------controle.ascx.vb----------------------
Dim monTexte as String
monTexte = CType(this.Page, _default)..MonTexte
'* en gros,il y a un casting, mais pas sûr de la syntaxe...



Antonio
Avatar
Jean-François Borie
Dim nomControle = "WucQuestionnaireswucQuest1.ascx"
Dim oWucQuest1 As wucQuest1 = Me.Page.LoadControl(nomControle)
oWucQuest1 .test = "Message de test"
' Me dis
pQualif1.Controls.Add(oWucQuest1 )


"Vincent Dartois" a écrit :

Par contre, je ne peux pas transmettre de données aux UserContrôle, je suis obligé de passé tout par session ?
exemple :

Fichier ascx
======= > Public Property test() As String
Get
Return lValTest.Text
End Get
Set(ByVal Value As String)
lValTest.Text = Value
End Set
End Property

Fichier aspx
========= > Dim nomControle = "WucQuestionnaireswucQuest1.ascx"
wucQuest1.test = "Message de test" ' Me dis forcément que j'ai pas d'instance
pQualif1.Controls.Add(Me.Page.LoadControl(nomControle))

========== > Existe-t-il un autre moyen ?

Merci.



"Cactus Corp." a écrit dans le message de news: %237DvN%
>> le but de cette page et d'afficher des questionnaires dans le panel.
>>
>> j'ai actuellement une page "questionnaire1" qui est en fait un
>> WebUserControl (ascx) que je souhaiterais affiché dans le panel de mon
>> webform "questionnaire"
>>
>> ci ce n'était que ca ce serai facile car il me suffit de faire un drag 'n
>> drop de l'ascx dans le panel en question, mais voilà comme je vais avoir
>> plusieurs questionnaires à afficher il faut que je choisisse dynamiquement
>> quel questionnaire je dois chargé.
>>
>> Comment puis-je faire celà ?
>
>
> Bonjour,
>
> --------------------default.aspx--------------------
> <asp:Panel id="pnlConteneur" runat="Server"/>
>
> --------------------default.aspx.cs--------------------
> protected Panel pnlConteneur;
>
> private void Page_Load(blablabla)
> {
> //identifier le contrôle à charger dynamiquement
> string nomControle = "moncontrole.ascx";
> if(valeurFictive = 12)
> nomControle = "monautrecontrole.ascx";
>
> //charger le contrôle
> pnlConteneur.Controls.Add(this.Page.LoadControl(nomControle));
> }
>
>
> En espèrant que cela réponde à votre question =)
>
> Antonio
>
>