Création d'un User Control et utilisation de celui-ci en ASP.NET (sous Visual Studio.NET et en VB.NET)

Documents pareils
Gestion du cache dans les applications ASP.NET

.NET - Classe de Log

Rapport de Mini-Projet en ArcGIS Engine

Rafraichissement conditionné d'une page en.net

Paginer les données côté serveur, mettre en cache côté client

Asp.Net 2.0. Denis Szalkowski Formateur Consultant

TP JAVASCRIPT OMI4 TP5 SRC

Hébergement et configuration de services WCF. Version 1.0

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

TP3 1 : WEB APPLICATIONS AVEC ASP.NET

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Thomas Petillon. les Cahiers du. Programmeur ASP.NET. Groupe Eyrolles, 2003 ISBN :

DotNet. Plan. Les outils de développement

Attaques de type. Brandon Petty

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Tutoriel : Feuille de style externe

< Atelier 1 /> Démarrer une application web

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Reporting Services - Administration

Formation VBA 3 Interagir

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

Gestion de stock pour un magasin

Consommer des services distants dans les pages ASP.NET Ajax

Introduction de Windows Form

Editeur html Guide de l'utilisateur

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Importer un fichier CSV

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

VTigerCRM. CRM : Logiciel de gestion des activités commerciales d'une (petite) entreprise

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

MODE D'EMPLOI DU CONTRIBUTEUR WEB UAPV "CONTRIBUER DANS UNE RUBRIQUE DU SITE WEB"

Utilitaires méconnus de StrataFrame

Documentation CAS à destination des éditeurs

PHP 5.4 Développez un site web dynamique et interactif

Déploiement et monitoring

Aspects techniques : guide d interfaçage SSO

Sébastien Sougnez 24/12/ / s.sougnez@areaprog.com 2 ans et demi d expérience

SYSTÈMES D INFORMATIONS

Microsoft Technopoche

Le stockage local de données en HTML5

Rapport de stage Nicolas PLAZE Licence Pro A2I. Rapport de Stage LICENCE PRO A2I. Société INFHOTIK. Nicolas PLAZE

"Indy\Source\Fulld7.bat" 6. Lancer à présent Delphi. Allez dans le menu "Composant" puis sur "Installer des paquets...".

Sauvegarde des bases SQL Express

Editer un script de configuration automatique du proxy

Thème : Création, Hébergement et référencement d un site Web

Module.NET 3 Les Assemblys.NET

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

{less} Guide de démarrage

Mémoire de projet de fin d études Création de pages web pour les branches de la faculté de génie

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

ASP.NET 2.0, C#, Spring.Net et NHibernate

Stockage du fichier dans une table mysql:

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Introduction à Expression Web 2

Comment faire pour créer ses propres pages html?

Nouveautés joomla 3 1/14

Le Framework.Net. Introduction. Pourquoi.Net?

PROJET AZURE (par Florent Picard, A2011)

Formulaires et Compteurs

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

MEGA Publisher. Guide d utilisation

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

de logiciels Web 2.0, SaaS Logiciels collaboratifs Portails pour entreprises Développement iphone, Android WebApp HTML5 Mobile marketing

Alfresco Guide Utilisateur

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Comment développer et intégrer un module à PhpMyLab?

SOUTENANCE ORALE RAPPORT DE PROJET D INFORMATIQUE

Responsive Design. Technologies du web. Stéphane Bouvry, 2014

Construire une application marketing Facebook sur la plateforme Windows Azure

Dans l'article précédent, vous avez appris

Stéphane Ouimet. Curriculum vitae de. Wiminfo inc

1 TD 2 : Construction d'une chier Acrobat et envoi par

Compétences fonctionnelles et techniques

3 Octobre Les Communautés MS

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

K?ellaWeb Saisie des absences, retards et sanctions APLON en mode Web

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Manuel d'utilisation: Gestion commerciale - CRM

Module pour la solution e-commerce Magento

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

Guide d installation d AppliDis Free Edition sur Windows Serveur 2008 R2

PRODUITS Utiliser la messagerie intégrée dans VisualQie

Formation HTML / CSS. ar dionoea

IVXI Développement d applications clientes Internet et intranet

Utilisation de l outil lié à MBKSTR 9

Sql Server 2005 Reporting Services

Projet de programmation (IK3) : TP n 1 Correction

Administration du site (Back Office)

GOOGLE ANALYTICS. Ajout du code de suivi sur PowerBoutique. Ajout du code de suivi Google Analytics. Page 1 / 7 TUTO / GOOGLE ANALYTICS

Gestion de l authentification et des autorisations

Manuel d'utilisation de l'administration du site Japo.ch - 1

Tutoriel TYPO3 pour les rédacteurs

Transcription:

Création d'un User Control et utilisation de celui-ci en ASP.NET (sous Visual Studio.NET et en VB.NET) Pré-requis Dans cet exemple, je vais utiliser la librairie de classes présentée juste avant (ASP.NET Chaînes Utilitaires) afin de traîter les strings qui seront ajoutées à ce User Control. ASP.NET Chaînes Utilitaires (http://www.asp-php.net/scripts/asp.net/lib_class.php) Définition Tout d'abord, définissons simplement ce qu'est un User Control dans ASP.NET. Il s'agit simplement d'un composant (Souvent graphique) sous forme de classe et intégré dans la page en cours de développement. Les Users Controls sont la réponse de Microsoft face à la technique des inclusions sous PHP, contrairement à l'include de ASP 3, les ajouts de Users Controls dans un pages ASPX peuvent être conditionnées et peuvent être ajoutés avec des paramêtres transmis à ceux-ci. Comme expliqué précédemment, un User Control est une classe et à ce titre peut posséder des fonctions, des propriétés, des procédures, et des variables le tout publiques ou privées. En revanche, à la différence des classes simple, les User Controls ont une parties présentation (xxx.ascx) et une partie Code Behind (xxx.ascx.vb (ou cs si on est en C#)). Ainsi, on a donc l'évènement de base page_load qui permet de définir les actions se faisant au chargement de la page.

Exemple de Résultat

Source du User Control Dans cet exemple de User Control, le but est d'être le plus proche possible d'une classe VB, ainsi la page ASCX ne contient que l'entete spécifiant le fichier de Code Behind : Fichier URLRollOverInfo.ascx <%@ Control Language="vb" AutoEventWireup="false" Codebehind="URLRollOverInfo.ascx.vb" Inherits="URLRollOverInfo" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> Présentation des Composantes du Code Behind Le Code Behind contient la procédure principale chargée à l'instanciation de ce User Control (page_load) dans une autre page, mais aussi la liste des propriétés publiques et des variables privées. Association de bloc HTML avec une clé Ce User control gère aussi les requis de la librairie de script Overlib : Ajout de la ligne lançant la demande du fichier de script : <script language="javascript" src="répertoire de Scripts JS/overlib.js"> </script> Ajout de la ligne DIV qui sera cachée : <div id='overdiv' style='position:absolute; visibility:hidden; z-index:1000;'> </div> Ces 2 lignes doivent être présentes dans le fichier Source HTML une seule fois et donc dans le Code Behind, un appel permet d'associer un ajout de code dans la page avec une clé et de tester à chaque instanciation de ce User Control si cette clé n'est pas déja présente. Si c'est le cas, il n'ajoute pas le source HTML, sinon il l'ajoute. Cela se fait par le code suivant : Dim MonSourceAAjouter As String = "<div id='overdiv' "_ "style='position:absolute; visibility:hidden; z-index:1000;'></div>" If Not Page.IsClientScriptBlockRegistered("MaClé") Then Page.RegisterClientScriptBlock("MaClé", MonSourceAAjouter)

Ajout dynamique de string dans un autre String Dans le Code Behind figure une fonction qui permet d'ajouter automatiquement 3 variables dans une autre variable String. Il faut donc définir une constante String préformattée et qui recevra les autres variables string. Private Const IncludeScriptFormat As String = ControlChars.CrLf & _ "<script language=""{0}"" src=""{1}{2}""></script>" Private Const ScriptFileName As String = "overlib.js"... Dim location As String = Page.Request.ApplicationPath + "/script/" Dim includescript As String = [String].Format(IncludeScriptFormat, "javascript", location, ScriptFileName) If Not Page.IsClientScriptBlockRegistered("DeclarationFichierJS") Then Page.RegisterClientScriptBlock("DeclarationFichierJS", includescript) Fichier URLRollOverInfo.ascx.vb Public MustInherit Class URLRollOverInfo Inherits System.Web.UI.UserControl ' Liste des Variables Privées Private _TexteURL As String = "" Private _AdresseURL As String = "" Private _CSSClass As String = "" Private _LeTarget As String = "_self" Private _TitreBoiteSurvol As String = "" Private _TexteBoiteSurvol As String = "" Private _TailleBordure As String = "1" Private _BackGroundPicture As String = "" Private _CouleurFondTitreBoite As String = "" Private _CouleurFondTexteBoite As String = "#999999" Private _TextColor As String = "" Private _Width As String = "" Private _Height As String = "" Private _TextSize As String = "" Private _IsHTMLPopup As Boolean = False Private _IsFullHTMLControl As Boolean = False Private Const IncludeScriptFormat As String = ControlChars.CrLf & "<script language=""{0}"" src=""{1}{2}""></script>" Private Const ScriptFileName As String = "overlib.js" ' Liste des Propriétées Publiques Public Property URLTexte() As String Return _TexteURL _TexteURL = Value

Public Property AdresseURL() As String Return _AdresseURL _AdresseURL = Value Public Property CSSClass() As String Return _CSSClass _CSSClass = Value Public Property LeTarget() As String Return _LeTarget _LeTarget = Value Public Property TitreBoiteSurvol() As String Return _TitreBoiteSurvol _TitreBoiteSurvol = Value Public Property TexteBoiteSurvol() As String Return _TexteBoiteSurvol _TexteBoiteSurvol = Value Public Property TailleBordure() As String Return _TailleBordure _TailleBordure = Value Public Property BackGroundPicture() As String Return _BackGroundPicture _BackGroundPicture = Value

Public Property CouleurFondTitreBoite() As String Return _CouleurFondTitreBoite _CouleurFondTitreBoite = Value Public Property CouleurFondTexteBoite() As String Return _CouleurFondTexteBoite _CouleurFondTexteBoite = Value Public Property TextColor() As String Return _TextColor _TextColor = Value Public Property Width() As String Return _Width _Width = Value Public Property Height() As String Return _Height _Height = Value Public Property TextSize() As String Return _TextSize _TextSize = Value Public Property IsHTMLPopup() As Boolean Return _IsHTMLPopup Set(ByVal Value As Boolean) _IsHTMLPopup = Value Public Property IsFullHTMLControl() As Boolean

Return _IsFullHTMLControl Set(ByVal Value As Boolean) _IsFullHTMLControl = Value #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 Dim DeclarationDIV As String = "<div id='overdiv' " _ " style='position:absolute; visibility:hidden; z-index:1000;'></div>" Dim location As String = Page.Request.ApplicationPath + "/script/" Dim includescript As String = [String].Format(IncludeScriptFormat, "javascript", location, ScriptFileName) ' Déclaration des deux parties obligatoires dans la page pour faire ' fonctionner le Script If Not Page.IsClientScriptBlockRegistered("DeclarationFichierJS") Then Page.RegisterClientScriptBlock("DeclarationFichierJS", includescript) If Not Page.IsClientScriptBlockRegistered("DeclarationDIV") Then Page.RegisterClientScriptBlock("DeclarationDIV", DeclarationDIV) ' Attribution de la couleur du fond du Texte du Survol Dim ActionOnMouseOver As String = "javascript:return overlib('" & TexteBoiteSurvol & _ "', FGCOLOR, '" & CouleurFondTexteBoite & "'" 'Si l'on souhaite un titre dans la cellule de survol If TitreBoiteSurvol <> "" Then ActionOnMouseOver &= ", CAPTION, '" & _ Chaines_Utilitaires.Chaines_Utilitaires.ManipChaine.FormatteJavascript(TitreBoiteSurvol) & "'" ' Couleur du Fond de la cellule de Survol If CouleurFondTitreBoite <> "" Then ActionOnMouseOver &= ", BGCOLOR, '" & CouleurFondTitreBoite & "'"

' Fond de la cellule de Survol dans le cas d'une image If BackGroundPicture <> "" Then ActionOnMouseOver &= ", BACKGROUND, '" & BackGroundPicture & "'" ' Cas ou on a de l'html avec un lien par exemple ' et que l'on souhaite que celui-ci soit cliquable If IsHTMLPopup = True Then ActionOnMouseOver &= ", STICKY" ' Si on est sur d'envoyer de l'html Brut If IsFullHTMLControl = True Then ActionOnMouseOver &= ", FULLHTML" ' Taille et couleur du Texte If TextColor <> "" Then ActionOnMouseOver &= ", TEXTCOLOR, '" & TextColor & "'" If TextSize <> "" Then ActionOnMouseOver &= ", TEXTSIZE, " & TextSize ' Taille de la cellule RollOver If Width <> "" Then ActionOnMouseOver &= ", WIDTH, " & Width If Height <> "" Then ActionOnMouseOver &= ", HEIGHT, " & Height ActionOnMouseOver &= ", BORDER, " & TailleBordure & ");" If AdresseURL <> "" Then ' Cas ou la cellule de survol apparait sur un Lien Dim MonLienSurvol As New System.Web.UI.WebControls.HyperLink() With MonLienSurvol.CssClass = CSSClass.NavigateUrl = AdresseURL.Target = LeTarget.Text = URLTexte.Attributes.Add("onmouseover", ActionOnMouseOver).Attributes.Add("onmouseout", "javascript:return nd();") End With Me.Controls.Add(MonLienSurvol) Else ' Cas ou la cellule de survol apparait sur un simple Div généré Dim MonLienSurvol As New System.Web.UI.WebControls.Label() With MonLienSurvol.CssClass = CSSClass.Text = URLTexte

.Attributes.Add("onmouseover", ActionOnMouseOver).Attributes.Add("onmouseout", "javascript:return nd();") End With Me.Controls.Add(MonLienSurvol) End Sub ------------------------------ End Class Utilisation de ce User Control Ce User Control est a ajouter dans votre projet directement dans le répertoire contenant tous vos UC (un peu comme une Bibliothèque). Afin d'utiliser celui-ci sous Visual Studio.NET, il suffit de faire faire glisser le User Control sur la page ASPX (ou ASCX) voulu (en mode Design). Sinon mettre dans le fichier source de la page ASPX (ou ASCX) le texte suivant (ce qui revient à la même chose que le Cliqué- Glissé sous VS.NET) : <%@ Register TagPrefix="UserControl" TagName="MonUserControl" src="urlrolloverinfo.ascx" %> Une fois le Register fait, il y a plusieurs possibilités : Soit ce User Control est dans un Datagrid (1) Soit ce User Control est ajouté dans la page ASPX directement (2) Soit ce User Control est géré directement par le Code Behind (3)

Cas N 1 : User Control dans un Datagrid Dans la page ASPX, lors de la création du Datagrid, on peut paramétrer des colonnes avec un format particulier (Appelé les Templates Columns), et ainsi dire que dans la colonne spécifiée on aura un texte (issu du Bind du Datagrid) avec le survol (via ce User Control) dont les données nécessaires seront issues de la base. Ceci se fait par le code suivant dans la page ASPX : <asp:templatecolumn HeaderText="Nom du Film" ItemStyle -Width="50%"> <ItemTemplate> <UserControl:MonUserControl id="monusercontrolboitesurvol" URLTexte='<%# Container.DataItem("nom_du_film") %>' AdresseURL='<%# "../?page=fiche&film="& Container.DataItem("ref_film") %>' CouleurFondTexteBoite='#999999' CouleurFondTitreBoite='#333333' TailleBordure='2' TitreBoiteSurvol='Détails' TexteBoiteSurvol='<%# Container.DataItem("realisateurs") %>' runat="server"> </UserControl:MonUserControl> </ItemTemplate> </asp:templatecolumn> Pour bien comprendre ce code, il faut travailler sur les Datagrid et la gestion de ceux-ci. Cas N 2 : User Control dans la page ASPX directement Il se gère de la même facon que pour le datagrid avec le code suivant : <%@ Register TagPrefix="uc1" TagName="URLRollOverInfo" Src="URLRollOverInfo.ascx" %>... <uc1:urlrolloverinfo id="urlrolloverinfo1" URLTexte='Le Texte du Lien' AdresseURL='MaPageDestination.asp' CouleurFondTexteBoite='#999999' CouleurFondTitreBoite='#333333' TailleBordure='2' TitreBoiteSurvol='Détails' TexteBoiteSurvol='Mon Texte Qui sera Affiché' runat="server"> </uc1:urlrolloverinfo>

Cas N 3 : User Control géré directement par le Code Behind Dans ce cas, la ligne Register (dans la page ASPX) n'est pas nécessaire, tout ce gère alors par le Code Behind de la page ou on veut insérer le User Control. Cela donnera donc le code suivant : Dim ZoomCollab As URLRollOverInfo ZoomCollab = LoadControl("./URLRollOverInfo.ascx") With ZoomCollab.TitreBoiteSurvol = "Le Titre de la Boite".CouleurFond = "#999999".TexteURL = "Le Texte du Lien".CSSClass = "ClassCSSDulien".AdresseURL = "AdresseURL.asp".TexteBoiteSurvol = "Le Texte dans la boite du Survol"... End With... Me.Controls.Add(ZoomCollab) Ainsi, il ne vous reste plus qu'à adapter les différents exemples fournis à votre projet ASP.NET. Conclusion Une version de cet article est téléchargeable ici : ASP.NET - Javascript URL Survol (http://fromelard.free.fr/scripts/aspnet_urlrolloverinfo) Cet article nous montre donc comment créer un User Control et utiliser celui-ci dans votre projet ASP.NET. F