Accueil > > > USER CONTROL POUR AFFICHER LA DESCRIPTION D'UN PRODUIT
USER CONTROL POUR AFFICHER LA DESCRIPTION D'UN PRODUIT
Information sur la source
Description
Dans les sites de commerce, les pages affichant les propriétés d'un produit sont toutes identiques, il y a juste certaines propriétés propre à l'article qui change. Dans cet exemple, je vais vous montrer, un User Control qui demandera qu'un objet Vin en propriété et ressortira une sorte de fiche complete sur cet objet. J'ai pris le cas du vin, car je suis en train de developper la nouvelle version de mon site Ce que je fais est assez simple, j'ai un UserControl (ascx) nommé vin.ascx et j'appelle autant de fois que j'ai d'objet vinClass dans vins.aspx
Source
'Tout d'abord voici le code de la collection de Vins et de la Class VinClass
#Region " Classes des vins :) "
Public Class VinClass
Public Code As String
Public NomVin As String
Public Description As String
Public LongDescription As String
Public ImageEtiquetteUrl As String
Public Prix As Decimal
End Class
Public Class VinClassCollection
Inherits CollectionBase
Default ReadOnly Property item(ByVal index As Integer) As VinClass
Get
Return CType(Me.List.Item(index), VinClass)
End Get
End Property
Public Function add(ByVal oVinClass As VinClass) As VinClass
Me.List.Add(oVinClass)
Return oVinClass
End Function
End Class
#End Region
'Dans Vins.aspx je charge ma collection de Vin, puis je boucle sur cette collection et passe ajoute à ma page un nouvel UserControl avec en parametre l'objet VinClass
'Voici le code du page_Load de vins.aspx :
If Not VinColl.Count = 0 Then
For Each oVinClass As VinClass In VinColl
'on charge un nouveau UserControl et on vérifie que celui ci existe
Dim control As Vin = New Vin
If New FileInfo(Server.MapPath("vin.ascx")).Exists = True Then
control = LoadControl("vin.ascx")
'On rentre nos données à l'UserControl
control.Vin = oVinClass
'On ajoute le usercontrol et une barre horizontale pour séparer les controles
Page.Controls.Add(control)
Page.Controls.Add(New LiteralControl("<hr/>"))
'On lance une exception si le fichier vin.ascx n'existe pas
Else
Throw New Exception("Vin.ascx non trouvé")
End If
Next
Page.Controls.RemoveAt(Vin.Controls.Count - 1)
End If
'voici maintenant le code de vin.ascx :
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="Vin.ascx.vb" Inherits="BeaujolaisDurand.Vin" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<h2><asp:hyperlink id="HyperLinkNomVin" runat="server"/></h2>
<asp:hyperlink id="HyperLinkImageDetailVin" runat="server"><asp:image id="ImgEtiquette" runat="server"/></asp:hyperlink>
<dl>
<dd>Description :</dd>
<dt>
<asp:literal id="LiteralDecriptionVin" runat="server"/>
</dt>
</dl>
<p class="Tarifs">Tarifs: <asp:literal id="LiteralPrixVin" runat="server"/> ¤</p>
<p class="LinkDetailVin"><asp:hyperlink id="HyperLinkDetailVin" runat="server">Cliquer ici pour en savoir plus</asp:hyperlink></p>
'Le code est simple, est il est XHTML compliant, je gere ma mis en page via les CSS2
'Voici le code de vin.ascx.vb
Imports System.IO
Public Class Vin
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
'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
#Region " Protected Withevents "
Protected WithEvents ImgEtiquette As System.Web.UI.WebControls.Image
Protected WithEvents LiteralDecriptionVin As System.Web.UI.WebControls.Literal
Protected WithEvents LiteralPrixVin As System.Web.UI.WebControls.Literal
Protected WithEvents HyperLinkImageDetailVin As System.Web.UI.WebControls.HyperLink
Protected WithEvents HyperLinkDetailVin As System.Web.UI.WebControls.HyperLink
Protected WithEvents HyperLinkNomVin As System.Web.UI.WebControls.HyperLink
#End Region
#Region " Propriété "
Private _Vin As VinClass
Public WriteOnly Property Vin() As VinClass
Set(ByVal Value As VinClass)
_Vin = Value
End Set
End Property
#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
If Not _Vin.NomVin Is Nothing Then
HyperLinkNomVin.Text = _Vin.NomVin
If Not _Vin.Description Is Nothing Then
LiteralDecriptionVin.Text = _Vin.Description
Else
LiteralDecriptionVin.Text = "Indisponible"
End If
'on verra l'existence de la photo
If Not _Vin.ImageEtiquetteUrl Is Nothing And New FileInfo(Server.MapPath(_Vin.ImageEtiquetteUrl)).Exists = True Then
ImgEtiquette.ImageUrl = _Vin.ImageEtiquetteUrl
ImgEtiquette.AlternateText = "Etiquette du " & _Vin.NomVin
Else
ImgEtiquette.ImageUrl = "#"
ImgEtiquette.AlternateText = "Etiquette du " & _Vin.NomVin
End If
'on ajoute ou arrondi a 2 chiffres
If Not _Vin.Prix = 0 Then
LiteralPrixVin.Text = FormatNumber(_Vin.Prix, 2)
Else
LiteralPrixVin.Text = "Indisponible"
End If
If Not _Vin.Code Is Nothing Then
HyperLinkDetailVin.NavigateUrl = "DetailVin.aspx?vin=" & Server.UrlEncode(_Vin.Code)
HyperLinkImageDetailVin.NavigateUrl = "DetailVin.aspx?vin=" & Server.UrlEncode(_Vin.Code)
HyperLinkNomVin.NavigateUrl = "DetailVin.aspx?vin=" & Server.UrlEncode(_Vin.Code)
Else
HyperLinkDetailVin.Visible = False
HyperLinkImageDetailVin.NavigateUrl = "#"
HyperLinkNomVin.NavigateUrl = "#"
End If
Else
'si il n'y a pas le nom du vin on continue pas plus loin ...
Me.Visible = False
End If
End Sub
End Class
#Region " Classes des vins :) "
Public Class VinClass
Public Code As String
Public NomVin As String
Public Description As String
Public LongDescription As String
Public ImageEtiquetteUrl As String
Public Prix As Decimal
End Class
Public Class VinClassCollection
Inherits CollectionBase
Default ReadOnly Property item(ByVal index As Integer) As VinClass
Get
Return CType(Me.List.Item(index), VinClass)
End Get
End Property
Public Function add(ByVal oVinClass As VinClass) As VinClass
Me.List.Add(oVinClass)
Return oVinClass
End Function
End Class
#End Region
Conclusion
J'espere avoir été assez clair, si vous avez des question n'hésitez pas :)
Pour resumer, prenons cette fois cet exemple avec des Produits.
Je definit une classe Produit et aussi une classe de Collection de produit. Jusque la pas de problème
Ensuite dans ue de mes pages, je met tout les produits que je veux afficher dans la collection de produit. Je boucle sur Chaque produit et j'instancie un nouveau UserControl avec en parametre ce produit : For Each oVinClass As VinClass In VinColl
'on charge un nouveau UserControl et on vérifie que celui ci existe Dim control As Vin = New Vin control = LoadControl("vin.ascx") control.Vin = oVinClass
'On ajoute le usercontrol et une barre horizontale pour séparer les controles Page.Controls.Add(control)
Next
et dans le ascx on a une propriété de type produit, et cette propriété contient toutes les informations sur le produit, libre a nous de mettre les informations qui nous interesse sur la page
La capture d'ecran vous montre ce que ca donne au final
Maintenant si je veux rajouter un vin à la page, j'ai juste à rajouter un noeud à mon fichier xml et le reste se fait automatiquement (car j'ai décidé de peupler ma collection de vin via un fichier xml, mais ca revient au meme avec une bdd)
Historique
- 07 août 2004 23:55:24 :
- betise dans le titre ; custom Web Control --> User Control
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
AjaxControlToolKit - ModalPopupExtender dans un ascx [ par greedium ]
Bonjour,J'ai un problème dont je n'arrive pas à trouver de réference sur le Web...J'ai un ModalPopup AJAX dans un UserControl (ascx) qui est lui meme
Accéder à la méthode d'un usercontrols à partir d'un autre usercontrol [ par geckoqc ]
Bonjour, j'ai une page aspx (intro.aspx). Dans cette page intro.aspx, j'ai deux controls control1.ascx et control2.ascx Je voudrais, dans le code d
Problème avec ma DataRowView dans mon UserControl [ par aloisio11 ]
Bonjour,J'ai une erreur que je n'arrive pas a résoudre dans un UserControl.Je m'explique :J'appel mon usercontrol dans un repeater :<<
UPDATEPANEL + USERCONTROL [ par necnec ]
Bonjour à tous,Voila j'ai une page principale en ajax enabled + un user control que j'ai ajouté en fait j'aurais que mon usercontrole controle le text
Pb de UserControl [ par blueangel ]
je suis entrain de créer un datagrid en code behind dans un UserControl.dans l'evenement Page_load du user Control j'ai ajouté cette ligne de code pu
Accéder à un UserControl dans le Header d'un Repeater [ par wlad952 ]
Tout d'abord, bonjour !Je travail sur un site web en ASP.NET 2.0 C#. J'ai un usercontrol qui se trouve dans le header d'un repeater.J'aimerais savoir,
updatepanel UserControl et triggers [ par SuperBouly ]
bonjour, J'ai un usercontrol MonUserControl.ascx que j'ai doté d'évènements.J'ai d'autre part un GridView qui doit être rafraîchi lors d'un de ces évè
comment utiliser du javascript dans un Usercontrol ? [ par sosou80 ]
Bonjour,j'ai un usercontrol nomé : ClientFavoris.ascx , qui contient un treeview avec des checkbox a l'interieur, cet usercontrol est utilisé ds une p
Répercuter un event d'une page dans un usercontrol [ par Rredeyes ]
Bonjour à tous,J'ai une page qui est contenue dans une master page. cette master page contient des boutons edit-new-delete.Dans la page, je charge dyn
Problème updatepanel dans userControl [ par bizibiz17 ]
Bonjour,J'ai un problème avec un update panel qui ne "marche pas".En gros j'ai un usercontrol dans lequel il y a un autocompleter qui fonctionne corre
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|