21
DataSet et XML DataSet ................................................... 380 XML ........................................................ 386 Check-list .................................................. 399 Chapitre 10

Chapitre 10 DataSetetXML - Micro Application · 6 Dans la boîte de dialogue Générateur de requêtes, cochez les cases CustomerID,ContactName Address, City et Phone puis cliquez

  • Upload
    dangthu

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

DataSet et XML

DataSet ................................................... 380XML ........................................................ 386Check-list .................................................. 399

Chapitre

10

Ce chapitre présente d’autres mécanismes pour manipuler des données struc-turées et hiérarchiques. DataSet, par exemple, permet de récupérer des donnéesd’une source de données et de les stocker en mémoire, prêtes à être utiliséessans avoir à se reconnecter à la base de données. XML est un fichier qui stockedes données sous forme hiérarchique, et celles-ci sont téléchargeables vers lapage ASP.NET 2.0 à l’aide des méthodes et propriétés des contrôles ASP-.NET 2.0.

10.1 DataSetDataSet consiste en une collection d’objets DataTable. Il permet, à l’aide de laclasse DataAdapter, de récupérer des données d’une source de données et de lesstocker en mémoire. Dans les exemples du chapitre Les bases de données, vousavez travaillé avec des données connectées au serveur, mais quand voustravaillez avec DataSet, il faut savoir que les données sont déconnectées duserveur. L’avantage du stockage de la base de données en mémoire permet àl’utilisateur de prendre son temps pour modifier les données. Une fois lesmodifications faites, il fait leur mise à jour dans le serveur d’un seul clic,déchargeant ainsi considérablement ce dernier. DataSet possède aussi desméthodes comme WriteXml et ReadXml pour lire et écrire les données en tant quedocuments XML.

ExempleDans cet exemple et à l’aide de Visual Web Developer, vous allez créer lesobjets DataSet et TableAdapter, puis une couche d’accès aux données à l’aided’ObjectDataSource. Vous allez configurer ObjectDataSource avec DataSetpour afficher les données dans un contrôle GridView.

1 Ouvrez Visual Web Developer et créez un nouveau site web, que vousnommez xmlProjet.

2 Sélectionnez le répertoire racine du projet xmlProjet, puis cliquez surNouveau fichier dans le menu Fichier. La boîte de dialogue Ajouter unnouvel élément s’ouvre.

3 Dans la boîte de dialogue Ajouter un nouvel élément, choisissez DataSetpuis cliquez sur le bouton Ajouter. Visual Web Developer vous demandede créer le répertoire App_Code s’il n’existe pas ; dans ce cas, cliquez surOK.

4 Visual Web Developer insère automatiquement TableAdapter et ouvre laboîte de dialogue Assistant Configuration de TableAdapter pour ajouterou choisir la connexion à la base de données. Si vous cliquez sur le boutonAnnuler, vous pouvez toujours glisser un autre TableAdapter de la Boîte àoutils.

10 DataSet et XML

380 • Le guide du codeur

Suivez les instructions pour ajouter une connexion de données comme vousl’avez déjà fait dans les exemples précédents. Cette fois, choisissez la base dedonnées Northwind et pour le type de commande, cliquez sur le bouton radioUtiliser des instructions SQL puis cliquez sur le bouton Générateur de requê-tes.

5 Dans la boîte de dialogue Ajouter une table, sélectionnez Customers, puiscliquez respectivement sur les boutons Ajouter et Fermer.

m Figure 10-1 : La boîte de dialogue Choisissez un type de commandepour TableAdapter

b Figure 10-2 : Laboîte de dialogueAjouter une table

DataSet 10

Le guide du codeur • 381

6 Dans la boîte de dialogue Générateur de requêtes, cochez les casesCustomerID, ContactName, Address, City et Phone puis cliquez sur lesboutons Exécuter la requête et OK.

7 Dans la boîte de dialogue Entrez une instruction SQL, cliquez sur lebouton Suivant.

m Figure 10-3 : La boîte de dialogue Générateur de requêtes

m Figure 10-4 : La boîte de dialogue Entrez une instruction SQL

10 DataSet et XML

382 • Le guide du codeur

8 Dans la boîte de dialogue Choisir les méthodes à générer, cochez les troiscases, puis cliquez sur le bouton Suivant.

9 Dans la boîte de dialogue Résultats de l’Assistant, cliquez sur le boutonTerminer.

10 Créez un fichier Web Form et donnez-lui le nom dataset.aspx. Ouvrez-leet passez en mode Design.

m Figure 10-5 : La boîte de dialogue Choisir les méthodes à générer

m Figure 10-6 : Le fichier Dataset1.xsd ouvert dans Visual Web Developer

DataSet 10

Le guide du codeur • 383

11 Glissez un contrôle GridView dans le document. Dans son panneau TâcheGridView, choisissez Nouvelle source de données dans la liste déroulante.

12 Dans la boîte de dialogue Choisir un type de source de données, choi-sissez Objet et laissez le nom ObjetDataSource1, puis cliquez sur OK.

13 Dans la boîte de dialogue Choisir un objet métier, choisissezDataset1TableAdapters.CustomersTableadapter dans la liste déroulanteChoisissez votre objet métier, puis cliquez sur le bouton Suivant.

14 Dans la boîte de dialogue Définir les méthodes de données, laissez lessélections par défaut et cliquez sur le bouton Terminer.

15 Appuyez sur les touches [Ctrl]+[F5] pour tester la page.

m Figure 10-7 : La boîte de dialogue Choisir un objet métier

m Figure 10-8 : La boîte de dialogue Définir les méthodes de données

10 DataSet et XML

384 • Le guide du codeur

<%@ Page Language="VB" AutoEventWireup="false"CodeFile="Default.aspx.vb" Inherits="_Default" %><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">

<title>Page sans titre</title></head><body>

<form id="form1" runat="server"><div>

</div>

<asp:GridView ID="GridView1" runat="server"AutoGenerateColumns="False" DataKeyNames="CustomerID"DataSourceID="ObjectDataSource1"><Columns>

<asp:CommandField ShowDeleteButton="True"ShowEditButton="True" />

<asp:BoundField DataField="ContactName"HeaderText="ContactName"

m Figure 10-9 : Les données de DataSet affichées à l’aide de GridView dans lafenêtre du navigateur

DataSet 10

Le guide du codeur • 385

SortExpression="ContactName" /><asp:BoundField DataField="City"

HeaderText="City" SortExpression="City" /><asp:BoundField DataField="Address"

HeaderText="Address" SortExpression="Address" /><asp:BoundField DataField="Phone"

HeaderText="Phone" SortExpression="Phone" /><asp:BoundField DataField="CustomerID"

HeaderText="CustomerID" ReadOnly="True"SortExpression="CustomerID" />

</Columns></asp:GridView><asp:ObjectDataSource ID="ObjectDataSource1" runat="server"DeleteMethod="Delete"OldValuesParameterFormatString="original_{0}"SelectMethod="GetData"TypeName="DataSet1TableAdapters.CustomersTableAdapter"UpdateMethod="Update"><DeleteParameters>

<asp:Parameter Name="Original_CustomerID"Type="String" />

</DeleteParameters><UpdateParameters>

<asp:Parameter Name="ContactName" Type="String" /><asp:Parameter Name="City" Type="String" /><asp:Parameter Name="Address" Type="String" /><asp:Parameter Name="Phone" Type="String" /><asp:Parameter Name="CustomerID" Type="String" /><asp:Parameter Name="Original_CustomerID"Type="String" />

</UpdateParameters></asp:ObjectDataSource>

</form></body></html>m Le code de fichier dataset.aspx

10.2 XMLDans les chapitres précédents, vous avez utilisé les sources de donnéestabulaires (bidirectionnelles) SqlDataSource et ObjectDataSource. Dans cettesection, vous allez travailler avec la source de données hiérarchiques XmlDa-taSource. La source de données AccessDataSource, qui nécessite le logicielMicrosoft Access, ne sera pas traitée ici car nous travaillons dans ce livre avecSQL Server 2005 Express Edition comme un système de gestions de base dedonnées. Cette section commence par une introduction au langage XML quiprésente brièvement le document XML et sa structure, puis les différentes

10 DataSet et XML

386 • Le guide du codeur

méthodes ou technologies qui affichent les données du document XML. Lesautres rubriques couvrent les contrôles ASP.NET 2.0 qui affichent les donnéesdu document XML sur le navigateur et les stockent dans le document XML. Celivre, étant consacré à Visual Web Developer et ASP.NET 2.0, ne détaille pasXML. Pour plus d’informations sur ce langage, référez-vous aux nombreusesressources disponibles dans le commerce (ouvrages, articles, etc.).

Présentation générale du langage XMLXML (Extensible Markup Language) est un langage de balisage extensible fondépar les groupes de travail du World Wide Web Consortium. XML a évolué àpartir du langage mère SGML (Standard Generalized Markup Language) qui estaussi à l’origine du HTML. En effet, XML et HTML sont tous deux desapplications SGML. Le langage XML stocke, gère, organise et échange lesdonnées mais surtout, n’affiche pas les données comme le fait HTML. Lorsquele document XML est utilisé avec un document HTML, HTML peut stocker desdonnées dans le document XML de la même façon que dans un système degestion de données comme SQL Server, par exemple. XML utilise un langagede requête appelé XPath pour manipuler les bases de données. XPath secomporte avec XML comme le langage SQL avec SQL Server. Le point le plusimportant de XML est qu’il permet à deux systèmes informatiques noncompatibles (comme Windows et Unix) de s’échanger les données, et ce,surtout en utilisant un simple document HTML.

La structure de document XMLIl est possible de diviser le document XML en deux blocs, le bloc prologue etle bloc des éléments.

Le bloc prologueLes éléments du bloc prologue sont facultatifs. Voici ce qu’il peut y avoir dansle prologue d’un document XML :

1 Une déclaration de codage et le numéro de version ;

<?xml version="1.0" encoding="UTF-8"?>

2 Des instructions de traitement qui se présentent par une liaison à un fichierde feuille de style ;

<?xml-stylesheet type="text/xsl" href="fichier_css.xsl"?>

3 La déclaration DOCTYPE qui se présente par une liaison à un fichier dedéfinition de type de document (DTD) ;

<!DOCTYPE catalog SYSTEM "fichier_définition.dtd">

XML 10

Le guide du codeur • 387

4 Un commentaire dans le document XML ;

<!-- ici vous pouvez mettre des commentaires -->

Le bloc des élémentsLe bloc des éléments consiste en des balises d’éléments, chaque élément devantavoir un nom, et un ou plusieurs attributs avec leurs valeurs. Voici un exemplede balisage des éléments :

<personne><homme>

<nom>Maxime</nom></homme><femme>

<nom>Mona</nom></femme>

</personne>

Le document précédent peut être écrit aussi avec des attributs comme suit :

<personne><homme nom="Maxime"></homme><femme nom="Mona"></femme>

</personne>

Dans le balisage précédent, la balise <personne> représente la racine dudocument XML, sachant que dans un document XML, il ne doit y avoir qu’uneseule racine. Les autres éléments sont des éléments enfants. Voici l’exempled’un document XML qui commence par le prologue, puis l’élément racine<personnes>, l’élément enfant <personne> qui possède à son tour les élémentenfants <homme>, <femme> et ses attributs nom.

<?xml version="1.0" encoding="UTF-8"?><personnes>

<personne><homme nom="Maxime"></homme><femme nom="Mona"></femme>

</personne></personnes>

Afficher les données du fichier XMLComme nous l’avons mentionné au début du chapitre, le fichier XML n’est pasdestiné à afficher les données car c’est un langage de structure. Le documentXML permet de manipuler ses éléments et attributs pour afficher les donnéesdans le navigateur, sous forme arborescente ou autre. Il est possible d’utiliser

10 DataSet et XML

388 • Le guide du codeur

une ou plusieurs méthodes et technologies et il est important de les analyserpour en comprendre les mécanismes avant de voir comment ASP.NET 2.0 traitele document XML.

Afficher les données du fichier XML à l’aide du fichierdes feuilles de styleIl est possible de formater les données du fichier XML par les feuilles de styleen cascade. Le code suivant du fichier XML personne.xml contient un lien aufichier css appelé fichier_css.css.

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="fichier_css.css"?><personnes>

<personne><homme>

<nom>Maxime</nom></homme><femme>

<nom>Mona</nom></femme>

</personne></personnes>m Le fichier XML personne.xml

nom {display: block;color: brown;font-size: 12pt;

}m Le code du fichier des feuilles de style fichier_css.css

Si vous double-cliquez sur le fichier personne.xml pour l’ouvrir, les nomsMaxime et Mona vont s’afficher sur l’écran du navigateur.

Afficher les données du fichier XML à l’aide de JavaScriptet des objets DOMDans le document HTML suivant, l’activeX Microsoft.XMLDOM permet detélécharger le document personne02.xml à l’aide de la méthode load et de créerun arbre d’objets DOM manipulables par JavaScript.

<html><head>

<style><!--.nom_s {display: block;

XML 10

Le guide du codeur • 389

color: brown;font-size: 12pt;

}-->

</style></head><body>

<script language="javascript">var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")xmlDoc.async="false"xmlDoc.load("personne02.xml")document.write(’<Div class="nom_s">’)document.write(xmlDoc.documentElement.selectNodes("personne/homme").item(0).text)document.write(’</Div><Div class="nom_s">’)document.write(xmlDoc.documentElement.selectNodes("personne/femme").item(0).text)document.write("</Div>")

</script></body></html>m Le code du fichier HTML Javascript_dom.html

<?xml version="1.0" encoding="UTF-8"?><personnes>

<personne><homme>

<nom>Maxime</nom></homme><femme>

<nom>Mona</nom></femme>

</personne></personnes>m Le code du fichier personne02.xml

Afficher les données du fichier XML à l’aide de XSLTLe code du fichier XML personne03.xml suivant contient un lien au fichierXSLT fichier_xsl.xsl. Le fichier XSLT formate le document XML à l’aide del’élément <xsl:template> qui utilise le langage XPath (XPath fonctionnecomme SQL). Pour plus d’informations sur XSLT et XPath, consultez lesdocumentations de Microsoft.

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="fichier_xsl.xsl"?><personnes>

<personne>

10 DataSet et XML

390 • Le guide du codeur

<homme><nom>Maxime</nom>

</homme><femme>

<nom>Mona</nom></femme>

</personne></personnes>m Le fichier personne03.xml

<?xml version=’1.0’?><xsl:stylesheet version="1.0"➥ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="homme">

<DIV STYLE="display: block; color: brown; font-size: 12pt;"><xsl:value-of select="nom" />

</DIV></xsl:template><xsl:template match="femme">

<DIV STYLE="display: block; color: brown; font-size: 12pt;"><xsl:value-of select="nom" />

</DIV></xsl:template>

</xsl:stylesheet>m Le code du fichier fichier_xsl.xsl

Affichage des données du fichier XMLpar ASP.NET 2.0Dans cette rubrique, vous allez utiliser ASP.NET 2.0 pour manipuler lesdonnées dans le fichier XML.

ASP.NET 2.0 possède plusieurs contrôles pour travailler avec le documentXML. Si vous voulez seulement afficher les données du fichier XML sans lesmanipuler, vous pouvez utiliser le contrôle XML dans l’onglet Standard de laBoîte à outils. Ce contrôle vous permet de spécifier le nom du fichier XML etle fichier de style XSL le cas échéant. Autrement, vous pouvez glisser le fichierXML à partir de l’Explorateur de solutions directement vers le document, maiscette méthode n’affiche les données que sous forme hiérarchique dans uncontrôle TreeView.

À l’aide du contrôle de source de données XmlDataSource, les données dans ledocument XML deviennent une source configurable pour les contrôles liés auxdonnées, comme le contrôle GridView par exemple. Le membre GetXmlDocu-ment du contrôle XmlDataSource permet de charger les données XML enmémoire sous forme d’objets XmlDataDocument. Cela permet de modifier ledocument XML par programme ou par la page ASP.NET 2.0. De même, le

XML 10

Le guide du codeur • 391

langage de requête XPath permet de filtrer les données XML à l’aide ducontrôle XmlDataSource.

ASP.NET 2.0 possède aussi des classes à disposition pour travailler avec ledocument XML comme XmlTextReader et XmlTextWriter qui offrent un accèsrapide et non mis en cache pour la lecture et l’écriture en tant que documentXML. Les méthodes WriteXml et ReadXml de DataSet permettent également delire et écrire les données en document XML.

Utiliser le contrôle serveur web XMLPour afficher les données du document XML en utilisant le contrôle serveurweb XML, respectez les instructions suivantes :

1 Ouvrez Visual Web Developer et le projet xmlProjet.

2 Sélectionnez le répertoire racine du projet xmlProjet puis cliquez surNouveau fichier dans le menu Fichier. La boîte de dialogue Ajouter unnouvel élément s’ouvre.

3 Dans la boîte de dialogue Ajouter un nouvel élément, choisissez Web Formpuis saisissez xmlCtrl.aspx comme nom de fichier, et cliquez ensuite surle bouton Ajouter.

4 Glissez un contrôle XML de la Boîte à outils vers le document,sélectionnez-le puis ouvrez sa fenêtre Propriétés en appuyant sur la touche[F4].

5 Chargez le fichier personne02.xml dans votre serveur. Dans la fenêtrePropriétés, cliquez dans le champ de la propriété DocumentSource. Cliquezensuite sur le bouton de sélection et sélectionnez le fichier personne02.xmlde l’exemple précédent.

6 Appuyez sur les touches [Ctrl]+[F5] pour tester la page. Vous devez avoir letexte MaximeMona non formaté sur l’écran du navigateur.

7 Dans la fenêtre Propriétés, cliquez dans le champ de la propriétéTransformSource, cliquez sur le bouton de sélection et sélectionnez lefichier XSLT de l’exemple précédent fichier_xsl.xsl.

8 Appuyez sur les touches [Ctrl]+[F5] pour tester la page à nouveau. Vousdevez avoir le texte Maxime et Mona formaté en deux lignes sur l’écran dunavigateur.

<%@ Page Language="VB" %><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">

<title>xmlCtrl.aspx</title></head><body>

<form id="form1" runat="server">

10 DataSet et XML

392 • Le guide du codeur

<div><asp:Xml ID="Xml1" runat="server"

DocumentSource="~/App_Data/personne02.xml"TransformSource="~/App_Data/fichier_xsl.xsl">

</asp:Xml></div></form>

</body></html>m Le code de fichier xmlCtrl.aspx

Les fichiers XML et XSL

Pour formater les données d’un fichier XML à l’aide d’un fichier XSLT, vous devezindiquer le nom du fichier XSL dans le code du fichier XML par le code suivant :

<?xml−stylesheet type="text/xsl" href="nom_de_fichier.xsl"?>Avec le contrôle XML, vous n’avez pas besoin d’ajouter cette ligne car lecontrôle XML prend en charge la liaison entre les deux fichiers.

Utiliser la source de données XmlDataSourceXmlDataSource permet à des contrôles serveur web d’afficher les données d’unfichier XML dans le navigateur.

ExempleDans cet exemple, vous allez utiliser la source de données XmlDataSource et lecontrôle de données GridView pour afficher les données du fichier livres.xmlsous forme tabulaire. Normalement, XmlDataSource rend le premier niveau dela hiérarchie de données XML.

1 Ouvrez Visual Web Developer et le projet xmlProjet.

2 Dans l’Explorateur de solutions, sélectionnez le répertoire App_Data,cliquez avec le bouton droit de la souris puis cliquez sur Ajouter un nouvelélément. La boîte de dialogue Ajouter un nouvel élément s’ouvre.

3 Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez FichierXML et donnez-lui le nom livres.xml puis cliquez sur le bouton Ajouter.

4 Saisissez le code suivant dans le document du fichier livres.xml.

<?xml version="1.0" encoding="utf-8" ?><Livres>

<Livre Titre="ASP.NET 2.0" ISBN="2100497782"><Auteur IDn="Sweet"></Auteur><Editeur nom="DDM"></Editeur>

XML 10

Le guide du codeur • 393

<Texte Langue="Français" ></Texte></Livre><Livre Titre="VB.NET" ISBN="2100497782">

<Auteur IDn="Douran"></Auteur><Editeur nom="Future"></Editeur><Texte Langue="Français" ></Texte></Livre>

<Livre Titre="C#" ISBN="2100497782"><Auteur IDn="Nissan"></Auteur><Editeur nom="Livrat"></Editeur><Texte Langue="Anglais" ></Texte>

</Livre></Livres>m Le code du fichier livres.xml

5 Dans l’Explorateur de solutions, sélectionnez le répertoire racine, cliquezavec le bouton droit de la souris puis cliquez sur Ajouter un nouvel élément.

6 Dans la boîte de dialogue Ajouter un nouvel élément, choisissez Web Formpuis saisissez xmlGridView.aspx comme nom du fichier. Cliquez ensuitesur le bouton Ajouter.

7 Avec le document xmlGridView.aspx ouvert, passez en mode Design.

8 Glissez un contrôle GridView vers le document, ouvrez son panneau TâcheGridView puis choisissez Nouvelle source de données dans la liste dérou-lante.

9 Dans la boîte de dialogue Choisir un type de source de données, choi-sissez Fichier XML et laissez le nom XmlDataSource1 puis cliquez sur OK.

m Figure 10-10 : La boîte de dialogue Choisir un type de source de données

10 DataSet et XML

394 • Le guide du codeur

10 Dans la boîte de dialogue Configurer la source de données, cliquez sur lebouton Parcourir sur la même ligne que le champ Fichier de données.Sélectionnez le fichier livres.xml puis cliquez sur OK.

11 Appuyez sur les touches [Ctrl]+[F5] pour tester la page.

<%@ Page Language="VB" %><html xmlns="http://www.w3.org/1999/xhtml" >

m Figure 10-11 : La boîte de dialogue Configurer la sourcede données XmlDataSource

m Figure 10-12 : Les données du fichier livres.xml sont affichéesdans le navigateur

XML 10

Le guide du codeur • 395

<head runat="server"><title>xmlGridView.aspx</title>

</head><body>

<form id="form1" runat="server"><div>

<asp:GridView ID="GridView1" runat="server"AutoGenerateColumns="False"DataSourceID="XmlDataSource1">

<Columns><asp:BoundField DataField="Titre" HeaderText="Titre"

SortExpression="Titre" /><asp:BoundField DataField="ISBN" HeaderText="ISBN"

SortExpression="ISBN" /></Columns>

</asp:GridView><asp:XmlDataSource ID="XmlDataSource1" runat="server"

DataFile="~/App_Data/livres.xml"></asp:XmlDataSource>

</div></form>

</body></html>m Le code du fichier xmlGridView.aspx

Modifier le fichier XML à l’aide du contrôle XmlDataSource

Normalement, le contrôle XmlDataSource fonctionne seulement en lecture dedonnées. Pourtant, vous pouvez l’utiliser pour modifier les données du fichierXML. Pour cela, il faut utiliser la méthode GetXmlDocument qui construit l’objetXmlDocument avec ses objets enfants XmlNode en mémoire. Ces objets permet-tent de modifier les données en mémoire. À l’aide de la méthode save, cesdonnées modifiées et non modifiées vont être sauvegardées en remplaçant lesdonnées du fichier XML.

Stockage des données dans un fichier XMLASP.NET 2.0 possède des classes et des objets qui permettent de lire oud’écrire des données en document XML. Dans cette rubrique, vous allez utiliserla méthode WriteXml de Dataset pour stocker les données dans un fichier XMLsur votre disque dur.

1 Ouvrez Visual Web Developer et le projet xmlProjet.

10 DataSet et XML

396 • Le guide du codeur

2 À partir de l’Explorateur de solutions, pointez sur le fichier Default.aspx,cliquez avec le bouton droit de la souris puis cliquez sur Copier. Notez quele fichier Default.aspx a été créé dans la section DataSet.

3 Pointez sur le répertoire racine, cliquez avec le bouton droit de la sourispuis cliquez sur Coller. Renommez ensuite Copie de Default.aspx endataSet_Xml.aspx. Afin de travailler sans CodeBehind, supprimez le fichierdataSet_Xml.aspx.vb et les attributs CodeFile= dataSet_Xml.aspx.vb etInherits="_Default" dans la directive de la page dataSet_Xml.aspx.

4 Ouvrez le fichier dataSet_Xml.aspx puis passez en mode Design.

5 Sélectionnez le contrôle GridView, ouvrez son panneau Tâches Gridviewpuis cochez la case Activer la pagination. Dans la fenêtre Propriétés ducontrôle GridView, donnez la valeur 5 à la propriété PageSize.

6 En bas du contrôle GridView, glissez un contrôle Button, saisissez Stockerdans le fichier XML dans le champ de texte de sa propriété Text.Double-cliquez sur le bouton pour passer en mode Source et générer laméthode d’événement Button1_Click.

7 Vous allez faire une nouvelle connexion à la base de données Northwind etstocker les données dans un nouvel objet Dataset que vous allez créer parprogramme. Il est possible aussi d’utiliser Dataset1 lié au contrôleGridView par la création d’une instance objet de DataSet1. Double-cliquez,pour cela, sur le bouton pour passer en mode Source et générer la méthoded’événement Button1_Click. Ensuite, saisissez-y le code suivant :

Dim cnexStrg As String = "database=Northwind;Data " _& "Source=GIBRALTAR\SQLEXPRESS; Integrated Security=True"Using connexion As New Data.SqlClient.SqlConnection(cnexStrg)

Dim commande As New Data.SqlClient.SqlCommand _("select ContactName, City, Address, Phone, " _& "CustomerID from customers", connexion)connexion.Open()Dim dtSet As New Data.DataSetdtSet.DataSetName = "Clients"dtSet.Load(commande.ExecuteReader(), _Data.LoadOption.OverwriteChanges, "Client")dtSet.WriteXml(Server.MapPath("~/App_Data/dataSetXml.xml"))

End Using

8 Appuyez sur les touches [Ctrl]+[F5] pour tester la page.

Une fois les données affichées dans le contrôle GridView, cliquez sur le boutonStocker dans le fichier XML pour exécuter la méthode Button1_Click qui vafaire une connexion à la base de données Northwind, récupérer les données etles stocker dans le DataSet. Ensuite, la méthode WriteXml crée ou met à jour lefichier dataSetXml.xml. Notez que si vous ne voyez pas le fichier XML dans ledossier App_Data, il vous faut le sélectionner, puis cliquer avec le bouton droit

XML 10

Le guide du codeur • 397

de la souris puis cliquez sur Actualiser le dossier.

<%@ Page Language="VB" AutoEventWireup="false" %><script runat="server">

Protected Sub Button1_Click(ByVal sender As Object, _ByVal e As System.EventArgs)

Dim cnexStrg As String = "database=Northwind;Data " _& "Source=GIBRALTAR\SQLEXPRESS; Integrated Security=True"Using connexion As New Data.SqlClient.SqlConnection(cnexStrg)

Dim commande As New Data.SqlClient.SqlCommand _("select ContactName, City, Address, Phone, " _& "CustomerID from customers", connexion)connexion.Open()Dim dtSet As New Data.DataSetdtSet.DataSetName = "Clients"dtSet.Load(commande.ExecuteReader(), _Data.LoadOption.OverwriteChanges, "Client")dtSet.WriteXml(Server.MapPath("~/App_Data/dataSetXml.xml"))

End UsingEnd Sub

</script><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">

<title> dataSetXml.xml </title></head><body>

<form id="form1" runat="server"><div>

</div>

<asp:GridView ID="GridView1" runat="server"AutoGenerateColumns="False" DataKeyNames="CustomerID"DataSourceID="ObjectDataSource1"AllowPaging="True" PageSize="5"><Columns>

<asp:BoundField DataField="ContactName"HeaderText="ContactName"SortExpression="ContactName" />

<asp:BoundField DataField="City"HeaderText="City" SortExpression="City" />

<asp:BoundField DataField="Address"HeaderText="Address" SortExpression="Address" />

<asp:BoundField DataField="Phone"HeaderText="Phone" SortExpression="Phone" />

<asp:BoundField DataField="CustomerID"HeaderText="CustomerID"ReadOnly="True" SortExpression="CustomerID" />

</Columns></asp:GridView><asp:ObjectDataSource ID="ObjectDataSource1" runat="server"

10 DataSet et XML

398 • Le guide du codeur

DeleteMethod="Delete"OldValuesParameterFormatString="original_{0}"SelectMethod="GetData"TypeName="DataSet1TableAdapters.CustomersTableAdapter" >

</asp:ObjectDataSource><br /><asp:Button ID="Button1" runat="server"OnClick="Button1_Click"Text="Stocker dans le fichier XML" />

</form></body></html>m Le code du fichier dataSetXml.xml

À propos de l’instruction Data.DataSet

Pour éviter d’accéder aux classes de System.Data par l’instruction Data.Data-Set, vous pouvez insérer la directive Import comme suit :<%@ Import Namespace="System.Data" %>Une fois la directive ajoutée dans le document, vous pouvez simplifier l’instruc-tion Data.DataSet en saisissant DataSet seulement.

10.3 Check-listVoici un résumé des principaux points abordés dans ce chapitre :

j La création des objets DataSet et TableAdapter;

j Une vue générale du langage XML;

j L’affichage des données du fichier XML dans la page ASP.NET 2.0;

j Le stockage des données dans un fichier XML.

Check-list 10

Le guide du codeur • 399