affecter la construction d'un objet (dans une class) dans code behind
4 réponses
herve
Bonjour,
Je cherche à construite un objet entier dans un fichier vb (permetra de
faire plusieuers construction) ensuite l'affecter dans le code-behind,
plutôt que de la faire pour chacune des proprités.
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution.
Merci de votre aide
Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.PreRender
If Not Page.IsPostBack Then
...
dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid
Get
Dim _dgLst As New DataGrid
_dgLst.AutoGenerateColumns = "False"
Dim dgBC_IdInt As New BoundColumn
dgBC_IdInt.DataField = "id_int"
dgBC_IdInt.Visible = False
_dgLst.Columns.Add(dgBC_IdInt)
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
Bonjour,
Je cherche à construite un objet entier dans un fichier vb (permetra de faire plusieuers construction) ensuite l'affecter dans le code-behind, plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter votre contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution. Merci de votre aide Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender If Not Page.IsPostBack Then ... dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid Get Dim _dgLst As New DataGrid _dgLst.AutoGenerateColumns = "False" Dim dgBC_IdInt As New BoundColumn dgBC_IdInt.DataField = "id_int" dgBC_IdInt.Visible = False _dgLst.Columns.Add(dgBC_IdInt)
Return _dgLst End Get End Property
Petites précisions : 1) Vous semblez faire une différence entre le code-behind et le fichier VB : il n'y en a pas
2) La ligne <asp:datagrid id="dgLst" runat="server" />, s'occupe déjà de faire le new DataGrid, de l'ajouter aux controles fils de la page courante et si la classe de base contient un membre qui s'appelle dgLst, alors le nouveau DataGrid est affecté à ce membre. Si ensuite, vous affectez une autre valeur à dgList dans le code-behind, ceci n'affecter pas l'objet qui a été ajouté aux contrôles de la page. Or c'est celui-ci qui sera utilisé pour le rendu. Si vous voulez remplacez l'objet, il faut le retirer de la collection et en ajouter un autre (mais c'est nul comme façon de faire)
3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été appelé.
-- Zazar.
Bonjour,
Je cherche à construite un objet entier dans un fichier vb (permetra de
faire plusieuers construction) ensuite l'affecter dans le code-behind,
plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter votre
contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution.
Merci de votre aide
Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.PreRender
If Not Page.IsPostBack Then
...
dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid
Get
Dim _dgLst As New DataGrid
_dgLst.AutoGenerateColumns = "False"
Dim dgBC_IdInt As New BoundColumn
dgBC_IdInt.DataField = "id_int"
dgBC_IdInt.Visible = False
_dgLst.Columns.Add(dgBC_IdInt)
Return _dgLst
End Get
End Property
Petites précisions :
1)
Vous semblez faire une différence entre le code-behind et le fichier VB : il
n'y en a pas
2)
La ligne <asp:datagrid id="dgLst" runat="server" />, s'occupe déjà de faire
le new DataGrid, de l'ajouter aux controles fils de la page courante et si
la classe de base contient un membre qui s'appelle dgLst, alors le nouveau
DataGrid est affecté à ce membre.
Si ensuite, vous affectez une autre valeur à dgList dans le code-behind,
ceci n'affecter pas l'objet qui a été ajouté aux contrôles de la page. Or
c'est celui-ci qui sera utilisé pour le rendu. Si vous voulez remplacez
l'objet, il faut le retirer de la collection et en ajouter un autre (mais
c'est nul comme façon de faire)
3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été
appelé.
Je cherche à construite un objet entier dans un fichier vb (permetra de faire plusieuers construction) ensuite l'affecter dans le code-behind, plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter votre contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution. Merci de votre aide Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender If Not Page.IsPostBack Then ... dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid Get Dim _dgLst As New DataGrid _dgLst.AutoGenerateColumns = "False" Dim dgBC_IdInt As New BoundColumn dgBC_IdInt.DataField = "id_int" dgBC_IdInt.Visible = False _dgLst.Columns.Add(dgBC_IdInt)
Return _dgLst End Get End Property
Petites précisions : 1) Vous semblez faire une différence entre le code-behind et le fichier VB : il n'y en a pas
2) La ligne <asp:datagrid id="dgLst" runat="server" />, s'occupe déjà de faire le new DataGrid, de l'ajouter aux controles fils de la page courante et si la classe de base contient un membre qui s'appelle dgLst, alors le nouveau DataGrid est affecté à ce membre. Si ensuite, vous affectez une autre valeur à dgList dans le code-behind, ceci n'affecter pas l'objet qui a été ajouté aux contrôles de la page. Or c'est celui-ci qui sera utilisé pour le rendu. Si vous voulez remplacez l'objet, il faut le retirer de la collection et en ajouter un autre (mais c'est nul comme façon de faire)
3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été appelé.
-- Zazar.
herve
Zazar a écrit :
Bonjour,
Je cherche à construite un objet entier dans un fichier vb (permetra de faire plusieuers construction) ensuite l'affecter dans le code-behind, plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter votre contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il n'y ait pas d'autres pistes
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution. Merci de votre aide Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender If Not Page.IsPostBack Then ... dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid Get Dim _dgLst As New DataGrid _dgLst.AutoGenerateColumns = "False" Dim dgBC_IdInt As New BoundColumn dgBC_IdInt.DataField = "id_int" dgBC_IdInt.Visible = False _dgLst.Columns.Add(dgBC_IdInt)
Return _dgLst End Get End Property
Petites précisions : 1) Vous semblez faire une différence entre le code-behind et le fichier VB : il n'y en a pas
on ne se comprend pas tout à fait mais le code behind est dans un fichier vb (bien sur) mais lié à la page aspx. Tandis que ce que j'appelle "le fichier vb" se trouve effectivement dans un 3ème fichier (je crois que certains l'appelle composant!?). Ce qui change pas mal de chose dans les déclarations.
2) La ligne <asp:datagrid id="dgLst" runat="server" />, s'occupe déjà de faire le new DataGrid, de l'ajouter aux controles fils de la page courante et si la classe de base contient un membre qui s'appelle dgLst, alors le nouveau DataGrid est affecté à ce membre. Si ensuite, vous affectez une autre valeur à dgList dans le code-behind, ceci n'affecter pas l'objet qui a été ajouté aux contrôles de la page. Or c'est celui-ci qui sera utilisé pour le rendu. Si vous voulez remplacez l'objet, il faut le retirer de la collection et en ajouter un autre (mais c'est nul comme façon de faire)
je pense que c'est çà que je n'avai pas bien saisi.
3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été appelé.
Bien sûr, en fait je bind dans une portion de code non montrée, mais j'aurai pu oublier ... Merci de toute façon pour toutes ces remarques Hervé
-- Zazar.
Zazar a écrit :
Bonjour,
Je cherche à construite un objet entier dans un fichier vb (permetra de
faire plusieuers construction) ensuite l'affecter dans le code-behind,
plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter votre
contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car
j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il
n'y ait pas d'autres pistes
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution.
Merci de votre aide
Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.PreRender
If Not Page.IsPostBack Then
...
dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid
Get
Dim _dgLst As New DataGrid
_dgLst.AutoGenerateColumns = "False"
Dim dgBC_IdInt As New BoundColumn
dgBC_IdInt.DataField = "id_int"
dgBC_IdInt.Visible = False
_dgLst.Columns.Add(dgBC_IdInt)
Return _dgLst
End Get
End Property
Petites précisions :
1)
Vous semblez faire une différence entre le code-behind et le fichier VB : il
n'y en a pas
on ne se comprend pas tout à fait mais le code behind est dans un
fichier vb (bien sur) mais lié à la page aspx.
Tandis que ce que j'appelle "le fichier vb" se trouve effectivement dans
un 3ème fichier (je crois que certains l'appelle composant!?).
Ce qui change pas mal de chose dans les déclarations.
2)
La ligne <asp:datagrid id="dgLst" runat="server" />, s'occupe déjà de faire
le new DataGrid, de l'ajouter aux controles fils de la page courante et si
la classe de base contient un membre qui s'appelle dgLst, alors le nouveau
DataGrid est affecté à ce membre.
Si ensuite, vous affectez une autre valeur à dgList dans le code-behind,
ceci n'affecter pas l'objet qui a été ajouté aux contrôles de la page. Or
c'est celui-ci qui sera utilisé pour le rendu. Si vous voulez remplacez
l'objet, il faut le retirer de la collection et en ajouter un autre (mais
c'est nul comme façon de faire)
je pense que c'est çà que je n'avai pas bien saisi.
3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été
appelé.
Bien sûr, en fait je bind dans une portion de code non montrée, mais
j'aurai pu oublier ...
Merci de toute façon pour toutes ces remarques
Hervé
Je cherche à construite un objet entier dans un fichier vb (permetra de faire plusieuers construction) ensuite l'affecter dans le code-behind, plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter votre contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il n'y ait pas d'autres pistes
Je n'ai pas d'erreur à la compilation, mais pas de rendu à l'exécution. Merci de votre aide Hervé
Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender If Not Page.IsPostBack Then ... dgLst = _creeColDataGrid()
FICHIER VB
Private ReadOnly Property _creeColDataGrid() As DataGrid Get Dim _dgLst As New DataGrid _dgLst.AutoGenerateColumns = "False" Dim dgBC_IdInt As New BoundColumn dgBC_IdInt.DataField = "id_int" dgBC_IdInt.Visible = False _dgLst.Columns.Add(dgBC_IdInt)
Return _dgLst End Get End Property
Petites précisions : 1) Vous semblez faire une différence entre le code-behind et le fichier VB : il n'y en a pas
on ne se comprend pas tout à fait mais le code behind est dans un fichier vb (bien sur) mais lié à la page aspx. Tandis que ce que j'appelle "le fichier vb" se trouve effectivement dans un 3ème fichier (je crois que certains l'appelle composant!?). Ce qui change pas mal de chose dans les déclarations.
2) La ligne <asp:datagrid id="dgLst" runat="server" />, s'occupe déjà de faire le new DataGrid, de l'ajouter aux controles fils de la page courante et si la classe de base contient un membre qui s'appelle dgLst, alors le nouveau DataGrid est affecté à ce membre. Si ensuite, vous affectez une autre valeur à dgList dans le code-behind, ceci n'affecter pas l'objet qui a été ajouté aux contrôles de la page. Or c'est celui-ci qui sera utilisé pour le rendu. Si vous voulez remplacez l'objet, il faut le retirer de la collection et en ajouter un autre (mais c'est nul comme façon de faire)
je pense que c'est çà que je n'avai pas bien saisi.
3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été appelé.
Bien sûr, en fait je bind dans une portion de code non montrée, mais j'aurai pu oublier ... Merci de toute façon pour toutes ces remarques Hervé
-- Zazar.
Zazar
> >>Je cherche à construite un objet entier dans un fichier vb (permetra de >>faire plusieuers construction) ensuite l'affecter dans le code-behind, >>plutôt que de la faire pour chacune des proprités. > > > Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter
votre
> contrôle créé dans le CodeBehind aux contrôles du PlaceHolder. Effectivement je pensai à cette solution (mais en dernier ressort car j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il n'y ait pas d'autres pistes
Qu'entendez vous par "j'aurai préféré garder une partie dans la page aspx " ?
> Petites précisions : > 1) > Vous semblez faire une différence entre le code-behind et le fichier VB
: il
> n'y en a pas on ne se comprend pas tout à fait mais le code behind est dans un fichier vb (bien sur) mais lié à la page aspx. Tandis que ce que j'appelle "le fichier vb" se trouve effectivement dans un 3ème fichier (je crois que certains l'appelle composant!?). Ce qui change pas mal de chose dans les déclarations.
Ha ok, je n'avais pas compris.
> > 3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été > appelé. Bien sûr, en fait je bind dans une portion de code non montrée, mais j'aurai pu oublier ...
ok.
-- Zazar
> >>Je cherche à construite un objet entier dans un fichier vb (permetra de
>>faire plusieuers construction) ensuite l'affecter dans le code-behind,
>>plutôt que de la faire pour chacune des proprités.
>
>
> Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter
votre
> contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car
j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il
n'y ait pas d'autres pistes
Qu'entendez vous par "j'aurai préféré garder une partie dans la page aspx "
?
> Petites précisions :
> 1)
> Vous semblez faire une différence entre le code-behind et le fichier VB
: il
> n'y en a pas
on ne se comprend pas tout à fait mais le code behind est dans un
fichier vb (bien sur) mais lié à la page aspx.
Tandis que ce que j'appelle "le fichier vb" se trouve effectivement dans
un 3ème fichier (je crois que certains l'appelle composant!?).
Ce qui change pas mal de chose dans les déclarations.
Ha ok, je n'avais pas compris.
>
> 3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été
> appelé.
Bien sûr, en fait je bind dans une portion de code non montrée, mais
j'aurai pu oublier ...
> >>Je cherche à construite un objet entier dans un fichier vb (permetra de >>faire plusieuers construction) ensuite l'affecter dans le code-behind, >>plutôt que de la faire pour chacune des proprités. > > > Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter
votre
> contrôle créé dans le CodeBehind aux contrôles du PlaceHolder. Effectivement je pensai à cette solution (mais en dernier ressort car j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il n'y ait pas d'autres pistes
Qu'entendez vous par "j'aurai préféré garder une partie dans la page aspx " ?
> Petites précisions : > 1) > Vous semblez faire une différence entre le code-behind et le fichier VB
: il
> n'y en a pas on ne se comprend pas tout à fait mais le code behind est dans un fichier vb (bien sur) mais lié à la page aspx. Tandis que ce que j'appelle "le fichier vb" se trouve effectivement dans un 3ème fichier (je crois que certains l'appelle composant!?). Ce qui change pas mal de chose dans les déclarations.
Ha ok, je n'avais pas compris.
> > 3)Un DataGrid n'est pas affiché s'il sa méthode DataBind() n'a pas été > appelé. Bien sûr, en fait je bind dans une portion de code non montrée, mais j'aurai pu oublier ...
ok.
-- Zazar
herve
Zazar a écrit :
Je cherche à construite un objet entier dans un fichier vb (permetra de faire plusieuers construction) ensuite l'affecter dans le code-behind, plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter
votre
contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il n'y ait pas d'autres pistes
Qu'entendez vous par "j'aurai préféré garder une partie dans la page aspx " ?
la déclaration du datagrid: <asp:datagrid id="dgLst" runat="server" ...
---- ça y est je viens de résoudre mon problème et d'une autre façon: je passe l'obet par valeur
Property creeColDataGrid(ByVal dglst As DataGrid) Get Dim dgBC_IdInt As New BoundColumn dgBC_IdInt.DataField = "id_int" dgBC_IdInt.Visible = False dglst.Columns.Add(dgBC_IdInt)
... Return dglst End Get End Property
ce qui me permet de l'affecter dans le code-behind dgLst =creeColDataGrid(dgLst)
hervé
Zazar a écrit :
Je cherche à construite un objet entier dans un fichier vb (permetra de
faire plusieuers construction) ensuite l'affecter dans le code-behind,
plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter
votre
contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car
j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il
n'y ait pas d'autres pistes
Qu'entendez vous par "j'aurai préféré garder une partie dans la page aspx "
?
la déclaration du datagrid:
<asp:datagrid id="dgLst" runat="server" ...
----
ça y est je viens de résoudre mon problème et d'une autre façon:
je passe l'obet par valeur
Property creeColDataGrid(ByVal dglst As DataGrid)
Get
Dim dgBC_IdInt As New BoundColumn
dgBC_IdInt.DataField = "id_int"
dgBC_IdInt.Visible = False
dglst.Columns.Add(dgBC_IdInt)
...
Return dglst
End Get
End Property
ce qui me permet de l'affecter dans le code-behind
dgLst =creeColDataGrid(dgLst)
Je cherche à construite un objet entier dans un fichier vb (permetra de faire plusieuers construction) ensuite l'affecter dans le code-behind, plutôt que de la faire pour chacune des proprités.
Pour celà, mettez un PlaceHolder dans votre fichier .aspx, et ajouter
votre
contrôle créé dans le CodeBehind aux contrôles du PlaceHolder.
Effectivement je pensai à cette solution (mais en dernier ressort car j'aurai préféré garder une partie dans la page aspx ...). Dommage qu'il n'y ait pas d'autres pistes
Qu'entendez vous par "j'aurai préféré garder une partie dans la page aspx " ?
la déclaration du datagrid: <asp:datagrid id="dgLst" runat="server" ...
---- ça y est je viens de résoudre mon problème et d'une autre façon: je passe l'obet par valeur
Property creeColDataGrid(ByVal dglst As DataGrid) Get Dim dgBC_IdInt As New BoundColumn dgBC_IdInt.DataField = "id_int" dgBC_IdInt.Visible = False dglst.Columns.Add(dgBC_IdInt)
... Return dglst End Get End Property
ce qui me permet de l'affecter dans le code-behind dgLst =creeColDataGrid(dgLst)