Accueil     Commander     Clients     Téléchargements     Contacts     I-mode        Offre spéciale
   Hébergement ASP-PHP
      Pack PRO I
      Pack PRO II
      Pack PRO III
   Hébergement .NET
      Pack .NET I
      Pack .NET II
      Pack .NET III
   Revendeurs
      SEMI-DEDIE I
      SEMI-DEDIE II
      SERVEURS DEDIES
   Services
      NOM DE DOMAINE
      HTTPS & SSL
      E-COMMERCE
      SQL SERVEUR
      WEBMAIL
      REFERENCEMENT
   Les + Prosygma
      NOS TARIFS
      LE RESEAU
      ASSISTANCE
   Outils
      WHOIS
      FAQ
      Aide IIS
      Ressource KIT FP
      Composants ASP
     PARTENAIRES
     
     
     

Solutions hébergement
Support Dot NET.
  
  Source : Les laboratoires Microsoft

 

Accès aux données côté serveur


Présentation des données côté serveur

L'accès aux données est le point crucial de toute application concrète et ASP.NET propose un large éventail de contrôles parfaitement intégrés aux API d'accès aux données managées, fournies dans le Common Language Runtime. Cette section contient plusieurs itérations d'un exemple utilisant le contrôle DataGrid de ASP.NET pour effectuer la liaison aux résultats des requêtes SQL et aux fichiers de données XML. Cette section suppose une certaine connaissance des principes fondamentaux des bases de données, ainsi que du langage des requêtes SQL.

L'accès aux données côté serveur est unique en ce sens que les pages Web sont, à la base, sans état, ce qui présente certains défis complexes lorsque vous tentez d'exécuter des transactions, telles que l'insertion ou la mise à jour d'enregistrements à partir d'un ensemble de données extraites d'une base de données. Comme vous le constaterez dans cette section, le contrôle DataGrid peut vous aider à gérer ces défis, en vous permettant de vous concentrer davantage sur votre logique d'application que sur les détails de la gestion de l'état et des événements.



Connexions, commandes et DataSets

Le Common Language Runtime fournit un ensemble complet d'API d'accès aux données managées pour le développement d'applications utilisant de nombreuses données. Ces API permettent d'abstraire les données et de les présenter de manière cohérente, peu importe leur source réelle (SQL Server, OLEDB, XML, etc.). La plupart du temps, vous utiliserez essentiellement les trois objets suivants : les connexions, les commandes et les DataSets.

  • Une connexion représente une connexion physique à un magasin de données, tel que SQL Server ou un fichier XML.
  • Une commande représente une directive à extraire (sélectionner) ou manipuler (insérer, mettre à jour, supprimer) dans le magasin de données.
  • Un DataSet représente les données actuellement utilisées par une application. Remarquez que les DataSets sont toujours déconnectés de leur connexion source ainsi que de leur modèle de données et peuvent être modifiées de manière indépendante. Cependant, les modifications apportées à un DataSet peuvent être aisément harmonisées avec le modèle de données d'origine.

Pour une description plus détaillée de la solution d'accès aux données managées dans le Common Language Runtime, lisez la section Vue d'ensemble de ADO.NET de ce didacticiel.

Accès aux données SQL

Une application doit généralement exécuter une ou plusieurs requêtes de sélection, insertion, mise à jour ou suppression dans une base de données SQL. Le tableau suivant illustre un exemple de chacune de ces requêtes.

Requête Exemple
Sélection simple SELECT * from Employees
WHERE FirstName = 'Bradley';
Sélection de jointure SELECT * from Employees
E, Managers M WHERE
E.FirstName = M.FirstName;
Insertion INSERT into Employees
VALUES ('123-45-6789',
'Bradley','Millington','
Program Manager');
Mise à jour UPDATE Employees SET Title
= 'Development Lead'
WHERE FirstName = 'Bradley';
Suppression DELETE from Employees
WHERE Productivity < 10;

Pour permettre à votre page d'accéder aux classes dont vous avez besoin pour accéder aux données SQL, vous devez importer les espaces de noms System.Data et System.Data.SqlClient dans votre page.

Pour lancer une requête Sélection portant sur une base de données SQL, vous devez créer un SqlConnection pour la base de données passant la chaîne de connexion, puis construire un objet SqlDataAdapter qui contient votre instruction de requête. Pour remplir un objet DataSet à l'aide des résultats de la requête, vous devez appeler la méthode Fill de la commande.


Dim myConnection As New SqlConnection
("server=(local)\NetSDK;database=
pubs;Trusted_Connection=yes") Dim myCommand As New
SqlDataAdapter("select *
from Authors", myConnection) Dim ds As New DataSet() myCommand.Fill(ds, "Authors")
C# VB JScript  

Comme mentionné précédemment dans cette section, l'utilisation d'un DataSet a l'avantage d'offrir une vue déconnectée de la base de données. Vous pouvez manipuler le DataSet dans votre application, puis harmoniser ultérieurement vos modifications avec la base de données. Pour les applications qui s'exécutent sur une longue période, il s'agit souvent de la meilleure approche. Pour les applications Web, vous effectuez généralement des opérations courtes avec chaque demande (généralement dans le seul but d'afficher les données). La plupart du temps, il n'est pas nécessaire de conserver un objet DataSet pendant une série de plusieurs demandes. Dans de telles situations, vous pouvez utiliser un SqlDataReader.

Un SqlDataReader fournit un pointeur avant uniquement, en lecture seule sur des données extraites d'une base de données SQL. Pour utiliser un SqlDataReader, vous devez déclarer un SqlCommand plutôt qu'un SqlDataAdapter. Le SqlCommand expose une méthode ExecuteReader qui retourne un SqlDataReader. Remarquez également que vous devez ouvrir et fermer explicitement le SqlConnection lorsque vous utilisez un SqlCommand. Après un appel à ExecuteReader, le SqlDataReader peut être lié à un contrôle serveur ASP.NET, comme illustré à la section suivante.


Dim myConnection As 
SqlConnection = New SqlConnection
("server=(local)\NetSDK;
database=pubs;Trusted_Connection=yes") Dim myCommand As
SqlCommand =
New SqlCommand("select * from
Authors", myConnection) myConnection.Open() Dim dr As SqlDataReader =
myCommand.ExecuteReader() ... myConnection.Close()
C# VB JScript  

Lorsque vous exécutez des commandes qui n'exigent pas le retour de données, telles que des insertions, des mises à jour et des suppressions, vous devez également utiliser un SqlCommand. La commande est lancée en appelant une méthode ExecuteNonQuery, qui retourne le nombre de lignes affectées. Remarquez que la connexion doit être explicitement ouverte lorsque vous utilisez le SqlCommand. Le SqlDataAdapter traite automatiquement l'ouverture de session à votre intention.


Dim myConnection As
New SqlConnection("server
=(local)\NetSDK;database=
pubs;Trusted_Connection=yes") Dim myCommand As New SqlCommand( _ "UPDATE Authors
SET phone='(800) 555-5555'
WHERE au_id = '123-45-6789'", _ myConnection) myCommand.Connection.Open() myCommand.ExecuteNonQuery() myCommand.Connection.Close()
C# VB JScript  

Important : N'oubliez jamais de clôturer la connexion au modèle de données avant la fin de l'exécution de la page. Si vous ne fermez pas la connexion, vous risquez de dépasser accidentellement la limite de connexion en attendant que les instances de la page soient traitées lors d'un garbage collection.

Liaison de données SQL à un contrôle DataGrid

L'exemple suivant illustre une requête Sélection simple liée à un contrôle DataGrid. Le contrôle DataGrid restitue un tableau contenant les données SQL.

 
VB DataGrid1.aspx

Comme le DropDownList illustré à la section relative à la liaison de données, le contrôle DataGrid prend en charge une propriété DataSource qui prend un IEnumerable ou un ICollection, ainsi qu'un DataSet. Vous pouvez utiliser un DataSet en assignant à la propriété DefaultView d'un tableau contenu dans DataSet le nom du tableau que vous souhaitez utiliser au sein du DataSet. La propriété DefaultView représente l'état actuel d'un tableau au sein d'un DataSet, y compris les modifications éventuelles apportées par le code d'application (suppression de lignes ou modification de valeurs, par exemple). Une fois la propriété DataSource définie, vous devez appeler DataBind() pour remplir le contrôle.


MyDataGrid.DataSource=ds.
Tables("Authors").DefaultView MyDataGrid.DataBind()
C# VB JScript  

Une autre syntaxe consiste à spécifier à la fois un DataSource et un DataMember. Dans ce cas, ASP.NET obtient automatiquement le DefaultView à votre intention.


MyDataGrid.DataSource=ds
MyDataGrid.DataMember="Authors"
MyDataGrid.DataBind()
C# VB JScript  

Vous pouvez aussi effectuer directement la liaison à un SqlDataReader. Dans ce cas, vous affichez uniquement des données. Par conséquent, la nature « avant uniquement » du SqlDataReader est parfaitement adaptée à ce scénario et vous bénéficiez de l'augmentation des performances assurée par le SqlDataReader.

 
VB DataGrid1.1.aspx

Remarque : Seul le modèle DataSet d'accès aux données est illustré dans la suite de cette section. Cependant, tous ces exemples peuvent être réécrits pour tirer également profit de SQLDataReader.

Exécution d'une sélection paramétrée

Vous pouvez également exécuter une sélection paramétrée à l'aide de l'objet SqlDataAdapter. L'exemple suivant illustre la modification des données sélectionnées à l'aide de la valeur publiée à partir d'un HtmlControl de sélection.

 
VB DataGrid2.aspx

Le SqlDataAdapter gère une collection Parameters qui peut être utilisée pour remplacer les identificateurs de variables (dont le nom est précédé de « @ ») par des valeurs. Vous ajoutez à cette collection un nouveau SqlParameter qui spécifie le nom, le type et la taille du paramètre, puis vous affectez à sa propriété Value la valeur de la sélection.


myCommand.SelectCommand.
Parameters.Add(New SqlParameter
("@State", SqlDbType.NVarChar, 2)) myCommand.SelectCommand.
Parameters("@State").Value
= MySelect.Value
C# VB JScript  

Important : Remarquez que la propriété EnableViewState du DataGrid a la valeur false. Si les données sont remplies à chaque demande, il n'est pas intéressant que le DataGrid enregistre des informations sur l'état à envoyer lors d'un aller-retour avec des publications de formulaire. Comme le DataGrid enregistre toutes ses données lors de la gestion de l'état, il est important de le désactiver en temps utile pour améliorer les performances de vos pages.

DataGrid2.aspx remplit de manière statique les valeurs de la zone de sélection, mais cette opération ne s'exécute pas correctement si ces valeurs sont susceptibles d'être modifiées dans la base de données. Comme le HtmlControl de sélection prend également en charge une propriété IEnumerable DataSource, utilisez plutôt une requête Sélection pour remplir de manière dynamique la zone de sélection, afin de garantir que la base de données et l'interface utilisateur sont toujours synchronisées. L'exemple suivant illustre ce processus :

 
VB DataGrid3.aspx



Insertion de données dans une base de données SQL

Pour insérer une ligne dans la base de données, vous pouvez ajouter un formulaire d'entrée simple à la page et exécuter une commande d'insertion dans le gestionnaire de l'événement submit du formulaire. Comme dans les deux exemples précédents, vous utilisez la collection Parameters de l'objet de commande pour remplir les valeurs de la commande. Remarquez que vous pouvez également vérifier que les valeurs nécessaires ne sont pas null avant de tenter une insertion dans la base de données. Cela permet d'éviter toute violation accidentelle des contraintes de champ de la base de données. Vous exécutez la commande d'insertion dans un bloc try/catch, au cas où la clé primaire de la ligne insérée existerait déjà.

 
VB DataGrid4.aspx

Plutôt que de vérifier explicitement les valeurs d'entrée, il peut être plus simple d'utiliser les contrôles validateurs fournis avec ASP.NET. L'exemple suivant illustre cette procédure. Remarquez que l'utilisation du validateur RegEx offre l'avantage supplémentaire de vérifier le format des champs de l'ID de l'auteur, du code postal et du numéro de téléphone.

 
VB DataGrid5.aspx



Mise à jour des données d'une base de données SQL

La mise à jour d'une base de données est souvent complexe dans les applications Web. Le contrôle DataGrid intègre la prise en charge de ce scénario qui facilite les mises à jour. Pour permettre la modification de lignes, le contrôle DataGrid prend en charge une propriété EditItemIndex entière, qui indique la ligne modifiable de la grille. Une fois cette propriété définie, le contrôle DataGrid restitue la ligne au niveau de cet index sous la forme de zones de texte plutôt que de simples étiquettes. La valeur -1 (par défaut) indique qu'aucune ligne n'est modifiable. La page peut inclure le contrôle DataGrid dans un formulaire côté serveur et accéder aux données modifiées à l'aide du modèle objet de DataGrid.

Pour déterminer les lignes modifiables, vous devez disposer d'un moyen d'accepter une entrée utilisateur spécifiant la ligne qu'il souhaite modifier. Le contrôle DataGrid peut contenir un EditCommandColumn qui restitue des liens pour déclencher trois événements spéciaux : EditCommand, UpdateCommand et CancelCommand. EditCommandColumn est ajouté de manière déclarative à la collection Columns du contrôle DataGrid, comme le montre l'exemple suivant.

Sur la balise DataGrid proprement dite, vous associez des gestionnaires d'événements à chaque commande déclenchée à partir de EditCommandColumn. L'argument DataGridCommandEventArgs de ces gestionnaires permet d'accéder directement à l'index sélectionné par le client, que vous utilisez pour définir EditItemIndex pour le contrôle DataGrid. Remarquez que vous devez à nouveau lier le contrôle DataGrid pour que la modification entre en vigueur, comme le montre l'exemple suivant.


Public Sub MyDataGrid_Edit
(sender As Object,
E As DataGridCommandEventArgs) MyDataGrid.EditItemIndex
= E.Item.ItemIndex BindGrid() End Sub
C# VB JScript  

Si une ligne du DataGrid est modifiée, EditCommandColumn restitue les liens Update et Cancel. Si le client sélectionne Cancel, réaffectez simplement à EditItemIndex la valeur -1. Par contre, si le client sélectionne Update, vous devez exécuter votre commande de mise à jour sur la base de données. Pour exécuter une requête de mise à jour, vous devez connaître la clé primaire de la base de données correspondant à la ligne que vous souhaitez mettre à jour. Dans ce but, DataGrid expose une propriété DataKeyField à laquelle vous pouvez affecter le nom de champ clé primaire. Dans le gestionnaire d'événements associé à UpdateCommand, vous pouvez récupérer le nom de la clé à partir de la collection DataKeys de DataGrid. Pour indexer dans cette collection, utilisez l'ItemIndex de l'événement, comme le montre l'exemple suivant.


myCommand.Parameters("@Id")
.Value = MyDataGrid.DataKeys
(CType(E.Item.ItemIndex, Integer))
C# VB JScript  

À la fin du gestionnaire d'événements Update, réaffectez à EditItemIndex la valeur -1. L'exemple suivant illustre le fonctionnement de ce code.

 
VB DataGrid6.aspx

Le problème de l'exemple précédent réside dans le fait que le champ clé primaire (au_id) est également restitué sous la forme d'une zone de texte si une ligne est modifiable. Vous ne souhaitez pas que le client modifie cette valeur, car vous en avez besoin pour déterminer la ligne à mettre à jour dans la base de données. Heureusement, vous pouvez désactiver la restitution sous forme de zone de texte pour cette colonne en spécifiant exactement l'aspect de chaque colonne pour la ligne modifiable. Dans ce but, définissez chaque ligne dans la collection Columns du DataGrid, à l'aide du contrôle BoundColumn, pour assigner des champs de données à chaque colonne. Cette technique permet de contrôler totalement l'ordre des colonnes, ainsi que leur propriété ReadOnly. Pour la colonne au_id, affectez à la propriété ReadOnly la valeur true. Si une ligne est en mode édition, cette colonne continue à être restituée sous la forme d'une étiquette. L'exemple suivant illustre cette technique :

 
VB DataGrid7.aspx

Les contrôles BoundColumn ne sont pas les seuls contrôles que vous pouvez définir dans la collection Columns du DataGrid. Vous pouvez aussi spécifier un TemplateColumn afin de contrôler totalement le contenu de la colonne. Le modèle est simplement un contenu arbitraire. Vous pouvez restituer ce que vous souhaitez, y compris des contrôles serveur, dans les colonnes du DataGrid. L'exemple suivant illustre l'utilisation du contrôle TemplateColumn pour restituer la colonne « State » sous la forme d'une liste déroulante et la colonne « Contract » sous la forme d'un HtmlControl de case à cocher. La syntaxe de liaison de données ASP.NET est utilisée pour sortir la valeur du champ de données au sein du modèle. Remarquez la complexité de la logique permettant de forcer la liste déroulante et la case à cocher à refléter l'état des données dans la ligne.

 
VB DataGrid8.aspx

Comme vous pouvez placer un HtmlControl de liste déroulante ou de case à cocher dans un TemplateColumn, vous pouvez également insérer d'autres contrôles à cet endroit. L'exemple suivant ajoute des contrôles Validator aux colonnes afin de vérifier l'entrée du client avant de tenter d'exécuter la mise à jour.

 
VB DataGrid9.aspx



Suppression de données d'une base de données SQL

La suppression de données d'une base de données est très similaire à une commande de mise à jour ou d'insertion, mais vous devez toujours disposer d'un moyen de déterminer précisément la ligne de la grille à supprimer. Un autre contrôle pouvant être ajouté à la collection Columns du DataGrid est le contrôle ButtonColumn, qui restitue simplement un contrôle bouton. ButtonColumn prend en charge une propriété CommandName qui peut avoir la valeur Delete. Sur le DataGrid, vous associez un gestionnaire d'événements à DeleteCommand, à l'endroit où vous effectuez la suppression. À nouveau, vous utilisez la collection DataKeys pour déterminer la ligne sélectionnée par le client. L'exemple suivant illustre ce processus :

 
VB DataGrid10.aspx



Tri des données d'une base de données SQL

Une condition essentielle pour toutes les grilles est la possibilité de trier les données qu'elles contiennent. Même si le contrôle DataGrid ne trie pas explicitement ses données à votre place, il fournit une manière d'appeler un gestionnaire d'événements lorsque l'utilisateur clique sur un en-tête de colonne. Vous pouvez utiliser cette fonctionnalité pour trier les données. Si la propriété AllowSorting du DataGrid a la valeur true, il restitue des liens hypertexte pour les en-têtes de colonne qui déclenchent une commande Sort renvoyée à la grille. Affectez à la propriété OnSortCommand du DataGrid le gestionnaire que vous souhaitez appeler lorsque l'utilisateur clique sur un lien de colonne. Le nom de la colonne est passé sous la forme d'une propriété SortExpression dans l'argument DataGridSortCommandEventArgs, que vous pouvez utiliser pour lier à la grille la propriété Sort du DataView. L'exemple suivant illustre ce processus :


<script>
    Protected Sub MyDataGrid_Sort(Src 
As Object, E As
DataGridSortCommandEventArgs) ... DataView Source =
ds.Tables("Authors").DefaultView Source.Sort = E.SortExpression MyDataGrid.DataBind() End Sub </script> <form runat="server"> <ASP:DataGrid
id="MyDataGrid" OnSortCommand="MyDataGrid_Sort"
AllowSorting="true" runat="server" /> </form>
C# VB JScript  

L'exemple suivant illustre ce code en action.

 
VB DataGrid11.aspx

Si vous utilisez des contrôles BoundColumn, vous pouvez définir explicitement la propriété SortExpression de chaque colonne, de la manière illustrée dans l'exemple suivant.

 
VB DataGrid12.aspx



Utilisation des relations maître/détail

Il arrive fréquemment que votre modèle de données contienne des relations qui ne peuvent pas être représentées à l'aide d'une grille unique. Une interface Web très courante est une interface dans laquelle une ligne de données peut être sélectionnée, orientant le client vers une page « de détails » qui affiche des informations détaillées sur la ligne sélectionnée. Pour effectuer cette opération à l'aide du DataGrid, vous pouvez ajouter un HyperLinkColumn à la collection Columns, afin de spécifier la page de détails à laquelle ce lien renvoie le client. Vous utilisez la syntaxe de chaîne de format pour remplacer une valeur de champ dans ce lien, qui est passé en tant qu'argument Querystring. L'exemple suivant illustre ce processus :

Sur la page de détails, vous extrayez l'argument Querystring et exécutez une sélection de jointure pour obtenir les détails à partir de la base de données. L'exemple suivant illustre ce scénario :

 
VB DataGrid13.aspx



Écriture et utilisation de procédures stockées

En général, l'exécution de requêtes ad hoc entraîne une dégradation des performances. L'utilisation de procédures stockées permet de réduire le coût lié à des opérations de base de données multiples dans une application. Une procédure stockée est facile à créer et peut même être générée à l'aide d'une instruction SQL. L'exemple de code suivant crée une procédure stockée qui retourne simplement un tableau.

Vous pouvez créer des procédures stockées qui acceptent également des paramètres. Par exemple :

CREATE Procedure LoadPersonalizationSettings 
(@UserId varchar(50)) AS SELECT * FROM Personalization
WHERE UserID=@UserId return GO

L'utilisation d'une procédure stockée à partir d'une page ASP.NET s'inscrit dans le prolongement de ce que vous avez appris jusqu'ici à propos de l'objet SqlCommand. CommandText est simplement le nom de la procédure stockée, et non le texte de requête ad hoc. Pour indiquer à SqlCommand que CommandText est une procédure stockée, définissez la propriété CommandType.


myCommand.SelectCommand.CommandType 
= CommandType.StoredProcedure
C# VB JScript  

L'exemple suivant illustre un appel à une procédure stockée pour remplir le DataSet.

 
VB DataGrid14.aspx

Les paramètres des procédures stockées sont passés de la même manière que pour les requêtes ad hoc, comme illustré dans les exemples suivants.

 
VB DataGrid15.aspx

 
VB DataGrid16.aspx



Accès aux données XML

Au début de cette section, il est mentionné que le DataSet est destiné à abstraire des données de manière indépendante de la source de données réelle. Vous pouvez observer cette fonctionnalité en modifiant le focus de vos exemples de SQL à XML. Le DataSet prend en charge une méthode ReadXml qui prend un objet FileStream comme paramètre. Le fichier que vous lisez dans ce cas doit contenir à la fois un schéma et les données que vous souhaitez lire. Le DataSet exige que les données soient dans le formulaire, comme le montre l'exemple suivant.

Chaque section TableName correspond à une ligne unique du tableau. L'exemple suivant illustre la lecture du schéma et des données à partir d'un fichier XML à l'aide de la méthode ReadXml du DataSet. Remarquez qu'après leur lecture dans le DataSet, les données ne peuvent plus être distinguées des données SQL. Le DataGrid se lie à celles-ci de la même manière, comme illustré dans l'exemple suivant.

 
VB DataGrid17.aspx

Vous pouvez également lire les données et le schéma séparément, à l'aide des méthodes ReadXmlData et ReadXmlSchema du DataSet, de la manière illustrée dans l'exemple suivant.

 
VB DataGrid18.aspx

Le DataSet prend en charge non seulement les méthodes de lecture des données XML, mais également leur écriture. L'exemple suivant implémente un outil permettant de sélectionner des données SQL et d'écrire le résultat sous la forme de données XML ou de texte de schéma.

 
VB XMLGen.aspx

Résumé de la section

  1. Les API d'accès aux données managées du Common Language Runtime effectuent une abstraction des données et les présentent de manière cohérente, peu importe leur source réelle (SQL Server, OLEDB, XML, etc.).
  2. Pour permettre à votre page d'accéder aux classes dont vous avez besoin pour accéder aux données SQL, vous devez importer les espaces de noms System.Data et System.Data.SqlClient dans votre page.
  3. Le remplissage d'un DataSet à partir d'une requête SQL nécessite la création d'un SqlConnection, l'association d'un SqlDataAdapter à la connexion qui contient votre instruction de requête et le remplissage du DataSet à partir de la commande.
  4. Le contrôle DataGrid prend en charge une propriété DataSource qui prend un type IEnumerable (ou ICollection). Vous pouvez lui affecter le résultat d'une requête SQL en assignant la propriété DefaultView du DataSet, qui est de type DataView.
  5. Le SqlDataAdapter gère une collection Parameters qui peut être utilisée pour remplacer par des valeurs les identificateurs de variables (dont le nom est précédé de « @ »).
  6. Lorsque vous exécutez des commandes qui n'exigent pas de retour de données, telles que des insertions, des mises à jour et des suppressions, vous devez également utiliser SqlCommand plutôt que SqlDataAdapter. La commande est lancée en appelant une méthode ExecuteNonQuery, qui retourne le nombre de lignes affectées.
  7. Le SqlConnection doit être explicitement ouvert lorsque vous utilisez le SqlCommand (le SqlDataAdapter traite automatiquement l'ouverture de session à votre place). N'oubliez jamais de fermer SqlConnection pour le modèle de données avant la fin de l'exécution de la page. Si vous ne fermez pas la connexion, vous risquez de dépasser accidentellement la limite de connexion en attendant que les instances de la page soient libérées pour le garbage collection.
  8. Pour permettre la modification de lignes, le contrôle DataGrid prend en charge une propriété EditItemIndex entière, qui indique la ligne modifiable de la grille. Une fois cette propriété définie, le contrôle DataGrid restitue la ligne au niveau de cet index sous la forme de zones de texte plutôt que de simples étiquettes.
  9. Le DataGrid expose une propriété DataKeyField à laquelle vous pouvez affecter le nom du champ clé primaire. Dans le gestionnaire d'événements associé à UpdateCommand, vous pouvez récupérer le nom de la clé à partir de la collection DataKeys de DataGrid.
  10. L'utilisation de contrôles BoundColumn dans le DataGrid permet de contrôler totalement l'ordre des colonnes, ainsi que leur propriété ReadOnly.
  11. L'utilisation de contrôles TemplateColumn dans le DataGrid permet de contrôler totalement le contenu de la colonne.
  12. Le contrôle ButtonColumn peut être utilisé pour restituer simplement dans chaque ligne de cette colonne un contrôle bouton qui peut être associé à un événement.
  13. Un HyperLinkColumn peut être ajouté à la collection Columns du DataGrid afin d'orienter l'utilisateur vers une autre page lorsqu'il clique sur le lien.
  14. Si la propriété AllowSorting du DataGrid a la valeur true, il restitue des liens hypertexte pour les en-têtes de colonne qui déclenchent une commande Sort renvoyée à la grille. Affectez à la propriété OnSortCommand du DataGrid le gestionnaire que vous souhaitez appeler lorsque l'utilisateur clique sur un lien de colonne.
  15. Le DataSet prend en charge les méthodes ReadXml, ReadXmlData et ReadXmlSchema qui prennent un FileStream comme paramètre. Ces méthodes peuvent être utilisées pour remplir un DataSet à partir d'un fichier XML.
  16. L'utilisation de procédures stockées permet de réduire le coût lié à des opérations de base de données multiples dans une application.



Nos serveurs sont désormais des serveurs
Pentium 3 Ghz, 1 Go Ram

 La formule de base est à 10 Euros TTC / mois
Si vous avez des besoins plus spécifiques (composants, espace disque...), nous sommes la pour répondre à vos questions.
Rappel : les frais d'installation sont gratuits


Prosygma élu meilleur site.
 
Trois nouveaux composants ASP sont désormais en place sur toutes nos formules.Il s'agit de ASPIMAGE, ASPPOP3 et ASPMAIL.


La dernière version de Microsoft® .NET Framework contient tout ce qu'il vous faut pour faire fonctionner des applications .NET Framework est disponible sur nos serveurs

Cliquez içi pour commander votre hébergement .Net

Votre nom de domaine en .com, .net ou .org au prix unique : 20 Euros

  Vérifiez la disponibilité d'un nom de domaine