Bonjour, je croyais avoir trouvé la solut mais que neni !!!
Alors voila un composant avec 1 textbox:
Code:
Public Class WebUserControl1
Inherits System.Web.UI.UserControl
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
End Sub
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
'REMARQUE : la déclaration d'espace réservé suivante est requise
par le Concepteur Web Form.
'Ne pas supprimer ou déplacer.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur
Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
End Sub
Public Property nom() As String
Get
Return TextBox1.Text
End Get
Set(ByVal Value As String)
TextBox1.Text = Value
End Set
End Property
End Class
et ma page recevant le user control
Code:
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
End Sub
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected MonControle As WebUserControl1
'REMARQUE : la déclaration d'espace réservé suivante est requise
par le Concepteur Web Form.
'Ne pas supprimer ou déplacer.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur
Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Label1.Text = MonControle.nom
End Sub
End Class
quand je clique sur le bouton pour afficher dans le label le contenu de la
textbox de mon user control :
Citation:
La référence d'objet n'est pas définie à une instance d'un objet.
Détails de l'exception: System.NullReferenceException: La référence
d'objet n'est pas définie à une instance d'un objet.
Erreur source:
Ligne 28 :
Ligne 29 : Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Ligne 30 : Label1.Text = MonControle.nom
L'erreur semble être au niveau du user controle, si je met
Code:
Protected MonControle As New WebUserControl1
dans la page web, l'erreur est la même mais à cet endroit (l 31):
Citation:
Ligne 29 : Public Property nom() As String
Ligne 30 : Get
Ligne 31 : Return TextBox1.Text
Ligne 32 : End Get
Ligne 33 : Set(ByVal Value As String)
donc dans le user controle, je ne comprend toujours pas par contre ...
Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois pas
ou je me trompe!!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zazar
(snip code)
Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois
pas
ou je me trompe!!!
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux comprendre. Je suppose que dans la page.aspx vous n'avez absolument aucune réfèrence à MonControle et que vous voulez le charger dynamiquement. Si c'est bien le cas : 1) Ce n'est pas la peine de déclarer MonControle protected, private suffit. 2 ) La première exception est due au fait qu'à aucun moment vous n'instanciez votre contrôle, MonControle vaut donc nothing 3) La deuxième exception est du à votre manière d'instancier le controle. Si vous faîtes new WebUserControl1(), vous obtenez effectivement un objet de type WebUserControl1() (exactement de ce type, pas un type dérivé). Or dans cette classe, la variable TextBox1 n'est pas initilialisée (elle vaut nothing). Par contre, si vous faisiez un Page.LoadControl("WebUserControl1.ascx"), alors .NET aurait créé un objet de type "WebUserControl1.Ascx" qui hérite de WebUserControl1 et qui initialise TextBox1. Oui je sais, vous ne voulez pas utiliser Page.LoadControl().
Pour répondre à votre question originale, c'est envisageable en compilant du code à la volée :
Pour cela, il vous suffit de créer votre contrôle utilisateur exactement comme vous l'auriez créé pour le mettre dans une bibliothèque de contrôles, puis de stocker le code de ce contrôle dans votre base de données. Lorsque vous avez besoin du contrôle, vous récupérez son code, vous le compilez dans un Assembly en mémoire, vous faîtes un peu de réflection sur cet Assembly pour instancier le contrôle et le tour est joué. Si votre bouquin n'explique pas comment compiler du code ou comment créer des Contrôles Web ou encore comment faire de la reflection, vous connaissez les forums où poser vos questions :)
Bon courage.
-- Zazar
(snip code)
Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois
pas
ou je me trompe!!!
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux
comprendre.
Je suppose que dans la page.aspx vous n'avez absolument aucune réfèrence à
MonControle et que vous voulez le charger dynamiquement.
Si c'est bien le cas :
1) Ce n'est pas la peine de déclarer MonControle protected, private suffit.
2 ) La première exception est due au fait qu'à aucun moment vous
n'instanciez votre contrôle, MonControle vaut donc nothing
3) La deuxième exception est du à votre manière d'instancier le controle. Si
vous faîtes new WebUserControl1(), vous obtenez effectivement un objet de
type WebUserControl1() (exactement de ce type, pas un type dérivé). Or dans
cette classe, la variable TextBox1 n'est pas initilialisée (elle vaut
nothing). Par contre, si vous faisiez un
Page.LoadControl("WebUserControl1.ascx"), alors .NET aurait créé un objet de
type "WebUserControl1.Ascx" qui hérite de WebUserControl1 et qui initialise
TextBox1. Oui je sais, vous ne voulez pas utiliser Page.LoadControl().
Pour répondre à votre question originale, c'est envisageable en compilant du
code à la volée :
Pour cela, il vous suffit de créer votre contrôle utilisateur exactement
comme vous l'auriez créé pour le mettre dans une bibliothèque de contrôles,
puis de stocker le code de ce contrôle dans votre base de données. Lorsque
vous avez besoin du contrôle, vous récupérez son code, vous le compilez dans
un Assembly en mémoire, vous faîtes un peu de réflection sur cet Assembly
pour instancier le contrôle et le tour est joué. Si votre bouquin n'explique
pas comment compiler du code ou comment créer des Contrôles Web ou encore
comment faire de la reflection, vous connaissez les forums où poser vos
questions :)
Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois
pas
ou je me trompe!!!
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux comprendre. Je suppose que dans la page.aspx vous n'avez absolument aucune réfèrence à MonControle et que vous voulez le charger dynamiquement. Si c'est bien le cas : 1) Ce n'est pas la peine de déclarer MonControle protected, private suffit. 2 ) La première exception est due au fait qu'à aucun moment vous n'instanciez votre contrôle, MonControle vaut donc nothing 3) La deuxième exception est du à votre manière d'instancier le controle. Si vous faîtes new WebUserControl1(), vous obtenez effectivement un objet de type WebUserControl1() (exactement de ce type, pas un type dérivé). Or dans cette classe, la variable TextBox1 n'est pas initilialisée (elle vaut nothing). Par contre, si vous faisiez un Page.LoadControl("WebUserControl1.ascx"), alors .NET aurait créé un objet de type "WebUserControl1.Ascx" qui hérite de WebUserControl1 et qui initialise TextBox1. Oui je sais, vous ne voulez pas utiliser Page.LoadControl().
Pour répondre à votre question originale, c'est envisageable en compilant du code à la volée :
Pour cela, il vous suffit de créer votre contrôle utilisateur exactement comme vous l'auriez créé pour le mettre dans une bibliothèque de contrôles, puis de stocker le code de ce contrôle dans votre base de données. Lorsque vous avez besoin du contrôle, vous récupérez son code, vous le compilez dans un Assembly en mémoire, vous faîtes un peu de réflection sur cet Assembly pour instancier le contrôle et le tour est joué. Si votre bouquin n'explique pas comment compiler du code ou comment créer des Contrôles Web ou encore comment faire de la reflection, vous connaissez les forums où poser vos questions :)
Bon courage.
-- Zazar
Sébastien Delestre
Merci de vous penchez sur mon problème :
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux comprendre.
Le voici en entier : Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents MonControle As UserControl.WebUserControl1
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = MonControle.nom
End Sub
End Class
#######################################"
il y a quand meme quelque chose d'étrange, j'ai, dans une autre application, un autre user control aussi simple qui lui fonctionne, j'ai beau les regarder en long en large et en travers, je ne vois pas la différence entre les fichiers de mes 2 applications
Les solutions que vous me proposez ne me conviennent donc pas (ne m'en voulez pas), je voudrais que ca marche, tout simplement comme mon autre appli.
"Zazar" a écrit dans le message de news:O$
(snip code)
> Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois pas > ou je me trompe!!!
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux comprendre. Je suppose que dans la page.aspx vous n'avez absolument aucune réfèrence à MonControle et que vous voulez le charger dynamiquement. Si c'est bien le cas : 1) Ce n'est pas la peine de déclarer MonControle protected, private
suffit.
2 ) La première exception est due au fait qu'à aucun moment vous n'instanciez votre contrôle, MonControle vaut donc nothing 3) La deuxième exception est du à votre manière d'instancier le controle.
Si
vous faîtes new WebUserControl1(), vous obtenez effectivement un objet de type WebUserControl1() (exactement de ce type, pas un type dérivé). Or
dans
cette classe, la variable TextBox1 n'est pas initilialisée (elle vaut nothing). Par contre, si vous faisiez un Page.LoadControl("WebUserControl1.ascx"), alors .NET aurait créé un objet
de
type "WebUserControl1.Ascx" qui hérite de WebUserControl1 et qui
initialise
TextBox1. Oui je sais, vous ne voulez pas utiliser Page.LoadControl().
Pour répondre à votre question originale, c'est envisageable en compilant
du
code à la volée :
Pour cela, il vous suffit de créer votre contrôle utilisateur exactement comme vous l'auriez créé pour le mettre dans une bibliothèque de
contrôles,
puis de stocker le code de ce contrôle dans votre base de données. Lorsque vous avez besoin du contrôle, vous récupérez son code, vous le compilez
dans
un Assembly en mémoire, vous faîtes un peu de réflection sur cet Assembly pour instancier le contrôle et le tour est joué. Si votre bouquin
n'explique
pas comment compiler du code ou comment créer des Contrôles Web ou encore comment faire de la reflection, vous connaissez les forums où poser vos questions :)
Bon courage.
-- Zazar
Merci de vous penchez sur mon problème :
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux
comprendre.
Le voici en entier :
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents MonControle As UserControl.WebUserControl1
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Label1.Text = MonControle.nom
End Sub
End Class
#######################################"
il y a quand meme quelque chose d'étrange, j'ai, dans une autre application,
un autre user control aussi simple qui lui fonctionne, j'ai beau les
regarder en long en large et en travers, je ne vois pas la différence entre
les fichiers de mes 2 applications
Les solutions que vous me proposez ne me conviennent donc pas (ne m'en
voulez pas), je voudrais que ca marche, tout simplement comme mon autre
appli.
"Zazar" <DILAVNI.nicolas.prats@iie.cnam.fr.INVALID> a écrit dans le message
de news:O$hssnehEHA.1344@TK2MSFTNGP11.phx.gbl...
(snip code)
> Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois
pas
> ou je me trompe!!!
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux
comprendre.
Je suppose que dans la page.aspx vous n'avez absolument aucune réfèrence à
MonControle et que vous voulez le charger dynamiquement.
Si c'est bien le cas :
1) Ce n'est pas la peine de déclarer MonControle protected, private
suffit.
2 ) La première exception est due au fait qu'à aucun moment vous
n'instanciez votre contrôle, MonControle vaut donc nothing
3) La deuxième exception est du à votre manière d'instancier le controle.
Si
vous faîtes new WebUserControl1(), vous obtenez effectivement un objet de
type WebUserControl1() (exactement de ce type, pas un type dérivé). Or
dans
cette classe, la variable TextBox1 n'est pas initilialisée (elle vaut
nothing). Par contre, si vous faisiez un
Page.LoadControl("WebUserControl1.ascx"), alors .NET aurait créé un objet
de
type "WebUserControl1.Ascx" qui hérite de WebUserControl1 et qui
initialise
TextBox1. Oui je sais, vous ne voulez pas utiliser Page.LoadControl().
Pour répondre à votre question originale, c'est envisageable en compilant
du
code à la volée :
Pour cela, il vous suffit de créer votre contrôle utilisateur exactement
comme vous l'auriez créé pour le mettre dans une bibliothèque de
contrôles,
puis de stocker le code de ce contrôle dans votre base de données. Lorsque
vous avez besoin du contrôle, vous récupérez son code, vous le compilez
dans
un Assembly en mémoire, vous faîtes un peu de réflection sur cet Assembly
pour instancier le contrôle et le tour est joué. Si votre bouquin
n'explique
pas comment compiler du code ou comment créer des Contrôles Web ou encore
comment faire de la reflection, vous connaissez les forums où poser vos
questions :)
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux comprendre.
Le voici en entier : Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents MonControle As UserControl.WebUserControl1
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = MonControle.nom
End Sub
End Class
#######################################"
il y a quand meme quelque chose d'étrange, j'ai, dans une autre application, un autre user control aussi simple qui lui fonctionne, j'ai beau les regarder en long en large et en travers, je ne vois pas la différence entre les fichiers de mes 2 applications
Les solutions que vous me proposez ne me conviennent donc pas (ne m'en voulez pas), je voudrais que ca marche, tout simplement comme mon autre appli.
"Zazar" a écrit dans le message de news:O$
(snip code)
> Je n'y comprend rien, je travaille avec un bouquin a coté et je ne vois pas > ou je me trompe!!!
Il aurait fallu aussi avoir le code de la page .aspx aussi pour mieux comprendre. Je suppose que dans la page.aspx vous n'avez absolument aucune réfèrence à MonControle et que vous voulez le charger dynamiquement. Si c'est bien le cas : 1) Ce n'est pas la peine de déclarer MonControle protected, private
suffit.
2 ) La première exception est due au fait qu'à aucun moment vous n'instanciez votre contrôle, MonControle vaut donc nothing 3) La deuxième exception est du à votre manière d'instancier le controle.
Si
vous faîtes new WebUserControl1(), vous obtenez effectivement un objet de type WebUserControl1() (exactement de ce type, pas un type dérivé). Or
dans
cette classe, la variable TextBox1 n'est pas initilialisée (elle vaut nothing). Par contre, si vous faisiez un Page.LoadControl("WebUserControl1.ascx"), alors .NET aurait créé un objet
de
type "WebUserControl1.Ascx" qui hérite de WebUserControl1 et qui
initialise
TextBox1. Oui je sais, vous ne voulez pas utiliser Page.LoadControl().
Pour répondre à votre question originale, c'est envisageable en compilant
du
code à la volée :
Pour cela, il vous suffit de créer votre contrôle utilisateur exactement comme vous l'auriez créé pour le mettre dans une bibliothèque de
contrôles,
puis de stocker le code de ce contrôle dans votre base de données. Lorsque vous avez besoin du contrôle, vous récupérez son code, vous le compilez
dans
un Assembly en mémoire, vous faîtes un peu de réflection sur cet Assembly pour instancier le contrôle et le tour est joué. Si votre bouquin
n'explique
pas comment compiler du code ou comment créer des Contrôles Web ou encore comment faire de la reflection, vous connaissez les forums où poser vos questions :)
Protected WithEvents MonControle As UserControl.WebUserControl1
et j'utilisais
Label1.Text = MonControle.nom
J'ai donc essayé ceci (reprendre l'ID du controle comme il est dans la
page
ASPX) soit :
Protected WithEvents WebUserControl11 As UserControl.WebUserControl1 et donc
Label1.Text = WebUserControl11.nom
C'est pour ça que je vous demandais le code votre page .aspx. Sans celui-ci j'avais du faire une hypothèse qui ne s'est qu'en partie vérifiée :).
et maintenant ca marche. Le hic c'est qu'il ne me semble pas avoir lu cela quelque part. Et vous ?
C'est tout à fait normal. Le lien entre la page .aspx et le code-behind ne se fait pas par magie :
Dans le code-behind, vous définissez une classe qui contient des membres protégés. Dans la page.aspx vous définissez une classe qui hérite de la précédente et vous faîtes des new sur ses membres protégés. Quand dans la page .aspx, vous écrivez <asp:moncontrol id="nomduncontrol" runat=server /> vous déclarez dans la classe fille un membre qui s'appelle nomduncontrol de type moncontrol. Si ce membre existe dans la classe parent alors vous lui affectez simplement une instance de moncontrol, sinon vous définissez un nouveau membre à la classe fille. Est-ce un peu plus clair ?
Protected WithEvents MonControle As UserControl.WebUserControl1
et j'utilisais
Label1.Text = MonControle.nom
J'ai donc essayé ceci (reprendre l'ID du controle comme il est dans la
page
ASPX) soit :
Protected WithEvents WebUserControl11 As UserControl.WebUserControl1
et donc
Label1.Text = WebUserControl11.nom
C'est pour ça que je vous demandais le code votre page .aspx. Sans celui-ci
j'avais du faire une hypothèse qui ne s'est qu'en partie vérifiée :).
et maintenant ca marche. Le hic c'est qu'il ne me semble pas avoir lu cela
quelque part. Et vous ?
C'est tout à fait normal. Le lien entre la page .aspx et le code-behind ne
se fait pas par magie :
Dans le code-behind, vous définissez une classe qui contient des membres
protégés.
Dans la page.aspx vous définissez une classe qui hérite de la précédente et
vous faîtes des new sur ses membres protégés.
Quand dans la page .aspx, vous écrivez <asp:moncontrol id="nomduncontrol"
runat=server /> vous déclarez dans la classe fille un membre qui s'appelle
nomduncontrol de type moncontrol. Si ce membre existe dans la classe parent
alors vous lui affectez simplement une instance de moncontrol, sinon vous
définissez un nouveau membre à la classe fille.
Est-ce un peu plus clair ?
Protected WithEvents MonControle As UserControl.WebUserControl1
et j'utilisais
Label1.Text = MonControle.nom
J'ai donc essayé ceci (reprendre l'ID du controle comme il est dans la
page
ASPX) soit :
Protected WithEvents WebUserControl11 As UserControl.WebUserControl1 et donc
Label1.Text = WebUserControl11.nom
C'est pour ça que je vous demandais le code votre page .aspx. Sans celui-ci j'avais du faire une hypothèse qui ne s'est qu'en partie vérifiée :).
et maintenant ca marche. Le hic c'est qu'il ne me semble pas avoir lu cela quelque part. Et vous ?
C'est tout à fait normal. Le lien entre la page .aspx et le code-behind ne se fait pas par magie :
Dans le code-behind, vous définissez une classe qui contient des membres protégés. Dans la page.aspx vous définissez une classe qui hérite de la précédente et vous faîtes des new sur ses membres protégés. Quand dans la page .aspx, vous écrivez <asp:moncontrol id="nomduncontrol" runat=server /> vous déclarez dans la classe fille un membre qui s'appelle nomduncontrol de type moncontrol. Si ce membre existe dans la classe parent alors vous lui affectez simplement une instance de moncontrol, sinon vous définissez un nouveau membre à la classe fille. Est-ce un peu plus clair ?
-- Zazar
Sébastien Delestre
Merci pour ces éclaircissements.
"Zazar" a écrit dans le message de news:
> Dans ma page ASPX, j'avais : > > <WebUserControl1:WebUserControl1 id="WebUserControl11" > runat="server"></WebUserControl1:WebUserControl1> > > or dans mon ASPX.VB, j'avais > > Protected WithEvents MonControle As UserControl.WebUserControl1 > > et j'utilisais > > Label1.Text = MonControle.nom > > J'ai donc essayé ceci (reprendre l'ID du controle comme il est dans la page > ASPX) soit : > > Protected WithEvents WebUserControl11 As UserControl.WebUserControl1 > et donc > > Label1.Text = WebUserControl11.nom
C'est pour ça que je vous demandais le code votre page .aspx. Sans
celui-ci
j'avais du faire une hypothèse qui ne s'est qu'en partie vérifiée :).
> et maintenant ca marche. Le hic c'est qu'il ne me semble pas avoir lu
cela
> quelque part. Et vous ?
C'est tout à fait normal. Le lien entre la page .aspx et le code-behind ne se fait pas par magie :
Dans le code-behind, vous définissez une classe qui contient des membres protégés. Dans la page.aspx vous définissez une classe qui hérite de la précédente
et
vous faîtes des new sur ses membres protégés. Quand dans la page .aspx, vous écrivez <asp:moncontrol id="nomduncontrol" runat=server /> vous déclarez dans la classe fille un membre qui s'appelle nomduncontrol de type moncontrol. Si ce membre existe dans la classe
parent
alors vous lui affectez simplement une instance de moncontrol, sinon vous définissez un nouveau membre à la classe fille. Est-ce un peu plus clair ?
-- Zazar
Merci pour ces éclaircissements.
"Zazar" <DILAVNI.nicolas.prats@iie.cnam.fr.INVALID> a écrit dans le message
de news:OGAHUvfhEHA.2908@TK2MSFTNGP10.phx.gbl...
> Dans ma page ASPX, j'avais :
>
> <WebUserControl1:WebUserControl1 id="WebUserControl11"
> runat="server"></WebUserControl1:WebUserControl1>
>
> or dans mon ASPX.VB, j'avais
>
> Protected WithEvents MonControle As UserControl.WebUserControl1
>
> et j'utilisais
>
> Label1.Text = MonControle.nom
>
> J'ai donc essayé ceci (reprendre l'ID du controle comme il est dans la
page
> ASPX) soit :
>
> Protected WithEvents WebUserControl11 As UserControl.WebUserControl1
> et donc
>
> Label1.Text = WebUserControl11.nom
C'est pour ça que je vous demandais le code votre page .aspx. Sans
celui-ci
j'avais du faire une hypothèse qui ne s'est qu'en partie vérifiée :).
> et maintenant ca marche. Le hic c'est qu'il ne me semble pas avoir lu
cela
> quelque part. Et vous ?
C'est tout à fait normal. Le lien entre la page .aspx et le code-behind ne
se fait pas par magie :
Dans le code-behind, vous définissez une classe qui contient des membres
protégés.
Dans la page.aspx vous définissez une classe qui hérite de la précédente
et
vous faîtes des new sur ses membres protégés.
Quand dans la page .aspx, vous écrivez <asp:moncontrol id="nomduncontrol"
runat=server /> vous déclarez dans la classe fille un membre qui s'appelle
nomduncontrol de type moncontrol. Si ce membre existe dans la classe
parent
alors vous lui affectez simplement une instance de moncontrol, sinon vous
définissez un nouveau membre à la classe fille.
Est-ce un peu plus clair ?
> Dans ma page ASPX, j'avais : > > <WebUserControl1:WebUserControl1 id="WebUserControl11" > runat="server"></WebUserControl1:WebUserControl1> > > or dans mon ASPX.VB, j'avais > > Protected WithEvents MonControle As UserControl.WebUserControl1 > > et j'utilisais > > Label1.Text = MonControle.nom > > J'ai donc essayé ceci (reprendre l'ID du controle comme il est dans la page > ASPX) soit : > > Protected WithEvents WebUserControl11 As UserControl.WebUserControl1 > et donc > > Label1.Text = WebUserControl11.nom
C'est pour ça que je vous demandais le code votre page .aspx. Sans
celui-ci
j'avais du faire une hypothèse qui ne s'est qu'en partie vérifiée :).
> et maintenant ca marche. Le hic c'est qu'il ne me semble pas avoir lu
cela
> quelque part. Et vous ?
C'est tout à fait normal. Le lien entre la page .aspx et le code-behind ne se fait pas par magie :
Dans le code-behind, vous définissez une classe qui contient des membres protégés. Dans la page.aspx vous définissez une classe qui hérite de la précédente
et
vous faîtes des new sur ses membres protégés. Quand dans la page .aspx, vous écrivez <asp:moncontrol id="nomduncontrol" runat=server /> vous déclarez dans la classe fille un membre qui s'appelle nomduncontrol de type moncontrol. Si ce membre existe dans la classe
parent
alors vous lui affectez simplement une instance de moncontrol, sinon vous définissez un nouveau membre à la classe fille. Est-ce un peu plus clair ?