TP1 SI6 Démonstration de l'intérêt du développement en couches Passer d'une architecture 2 tiers à une architecture 3 tiers. Savoir - faire : Concevoir une interface utilisateur Développer ou maintenir une application exploitant une base de données partagée Savoir : Architectures applicatives concepts de base Interfaces homme-machine Fonctionnalités d'un outil de développement rapide d'applications Techniques de mise au point Nous allons maintenant créer un nouveau formulaire pour notre projet VRP. En effet les VRP ont demandé à pouvoir consulter leur CA et leur nombre de contrats ainsi que ceux de leurs collègues pour mieux connaître leur place au concours du meilleur VRP. N'étant quasiment jamais dans l'entreprise, ils doivent pouvoir avoir cette information via une interface Web. La personne chargée du calcul des salaires continue d'utiliser l'application Windows Forms en architecture 2 tiers mais en modèle MVC. Pour le développement de cette nouvelle vue Web, Visual Studio contient un serveur Web permettant de tester les applications Web en asp.net. Pour la mise en production de cette partie de l'application, il faudrait installer un serveur IIS avec ASP.NET pour pouvoir publier cette application, voir passer du HTTP au HTTPS pour sécuriser les transferts sur le Web. Et enfin autoriser l'accès à l'application depuis l'extérieur de l'entreprise. Vous allez voir que nous allons quasiment réutiliser tout notre code, d'où l'intérêt du développement en couches et du modèle MVC. RÉALISATION DE LA PAGE Ouvrez Visual Studio 2010 et créez un projet web de type ASP.NET 1
Supprimez de votre projet le dossier Account qui gère l'ouverture de session (ici on ne demandera pas aux VRP de s'authentifier ce n'est qu'un exercice) et le répertoire Script dont nous n'aurons pas besoin non plus. Ajouter à votre projet web, une référence à la classe "Vrp" de l'application "Windows Forms CRACOCMVC" et une référence à la classe "contrôleur" du même projet (après avoir recopié ce projet en local pour pouvoir en consulter le code). Voilà tout est prêt, il reste l'interface à faire. Ouvrez le fichier "Site.Master", changez le titre et détruisez le lien "Se connecter". Ouvrez votre page default.aspx, changez le titre et détruisez les deux lignes affichées. Dans la boite à outils, choisissez le contrôle "gridview" et insérez-le sur votre page. 2
Renommez votre "gridview", "gv_listevrp" et liez votre grille à la liste des VRP de la façon suivante : "Choisir source de données", puis <Nouvelle source de données> Sur l'écran suivant qui apparait choisissez "Objet" 3
Choisissez ensuite votre classe contrôleur : Puis choisissez la méthode "liretouslesvrp" 4
Vous obtenez cela : Voilà votre grille est désormais liée au retour de cette méthode de votre classe statique "contrôleur", il nous reste juste à ajouter un peu de code, pour cela double-cliquez sur votre page. 5
Commencez par importer l'espace de nom "Cracoc" en tête de votre programme (c'est l'espace de nom du projet CracocMVC" où se trouve les dll référencées). Puis comme pour l'interface "Windows Forms", nous devons déclarer puis instancier notre tableau (Liste) des Vrp. Je vous conseille donc d'ouvrir votre projet "Windows Forms CRACOCMVC" pour vous guider dans votre travail. Mettez un point d'arrêt sur l'instanciation de votre tableau (liste) des VRP (touche F9). Exécutez votre application et au point d'arrêt continuez en mode "pas à pas" en appuyant sur la touche F8. Notez le nom des méthodes appelées automatiquement par votre programme. C'est l'objectdatasource qui permet cet appel automatique. Il vous reste maintenant à cacher les colonnes inutiles et changer le titre des colonnes. Je vous donne un extrait de code pour cacher les cellules d'une colonne sur toutes les lignes de gridview. On utilise ici l'évènement DataBound d'une GridView. Private Sub gv_vrp_databound(sender As Object, e As System.EventArgs) Handles gv_vrp.databound ' Cet évenement se réalise quand la gridview est créée et remplie Dim ligne As GridViewRow For Each ligne In gv_vrp.rows ligne.cells(0).visible = False Next End Sub Je vous donne un extrait de code pour changer l'entête d'une colonne ou pour cacher cet entête. gv_vrp.headerrow.cells(0).visible = False gv_vrp.headerrow.cells(1).text = "NOM" 6