DATA-Concept

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille
Accueil Accueil Pour les développeurs MySql et ASP.NET Partie 2

MySql et ASP.NET Partie 2

Imprimer
Note des utilisateurs: / 0
MauvaisTrès bien 

MySql et ASP.NET

Dans l’article précédent nous avons vu comment utiliser le connecteur MySql pour .net et configurer une SQLDataSource pour afficher des données issues d’une table MySql dans une GridView.

Aujourd’hui, nous allons insérer des enregistrements et utiliser les paramètres des requêtes.

Le contrôle GridView ne permettant pas de gérer nativement l’insertion, nous allons utiliser le contrôle DetailsView pour effectuer cette tache.
Note : Il est néanmoins possible par code VB ou c# d’ajouter cette fonctionnalité à la GridView d’autant plus qu’elle dispose d’un Template (modèle) d’insertion.

Tout d’abord, cliquez sur le Smart Tag de la GridView pour activer la sélection.

Le contrôle DetailsView permet d’afficher un ou plusieurs enregistrements d’une table et de les éditer.

Afin de pouvoir manipuler les données, il va falloir indiquer au DetailsView sur quel enregistrement on désire travailler.

Pour cela nous allons créer une nouvelle source de données identique à la première, mais en ajoutant une clause where qui permettra d’afficher seulement l’enregistrement sélectionné dans la grille.

Créons une autre source de données

Voir l’article précédent pour la procédure.

Au lieu de créer une nouvelle connexion, nous allons utiliser celle qui est déjà créée dans notre fichier Web.config. Il suffit de la sélectionner dans la liste déroulante.

Chaîne de connexion dans le Web.Config

Cliquez sur Suivant,
Sélectionnez la table clients, puis cochez tous les champs.

Ensuite cliquez sur le bouton WHERE

Clause Where Dans Colonne : sélectionnez CLI_ID (la clé primaire).
  • Dans Opérateur : Sélectionnez =
  • Dans source : Sélectionnez Control.
Se sera notre paramètre de la clause Where, en l’occurrence la ligne sélectionnée dans la GridView

Paramètre de la clause Where


Tout naturellement, nous choisissons GridView1.
(De toute façon si vous avez suivi les explications précédentes vous n’avez pas d’autre choix !)


 

N’oubliez pas de cliquer sur le bouton Ajouter pour valider.
Clause Where
Visual Studio affiche un aperçu du code qu’il a généré.
Vous remarquerez qu’il recommence à mettre des crochets ([ ]) et des ?. Colère
Cliquez sur OK, Suivant, Terminer.
(Ce n’est pas la peine de vouloir tester la requête, puisque ça ne fonctionnera pas !)
Regardons à quoi ressemble la DataSource générée.
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:basetestConnectionString %>"
ProviderName="<%$ ConnectionStrings:basetestConnectionString.ProviderName %>"
SelectCommand="SELECT [CLI_ID], [CLI_NOM], [CLI_CREATION], [CLI_VALIDE] FROM [clients] WHERE ([CLI_ID] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="CLI_ID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>

Ce qui nous intéresse ici c’est :
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="CLI_ID" PropertyName="SelectedValue" Type="
Int32" />
</SelectParameters>

<SelectParameters>

Déclaration des paramètres de sélection

<asp: ControlParameter

Paramètre de la requête ayant pour origine un contrôle

ControlID="GridView1"

Nom du contrôle

Name="CLI_ID"

Nom du paramètre

Type="Int32"

Type du paramètre

PropertyName="SelectedValue"

Propriété du contrôle qui contient la valeur du paramètre

Maintenant mettons un peut d’ordre dans nos DataSources.

Récapitulons :
Nous voulons afficher les données (Select) dans la GridView, les mettre à jour (UpDate), les supprimer (Delete) et pouvoir ajouter de nouveaux enregistrements (Insert).
Jusqu’à présent, il est possible de faire des mises à jour et des suppressions dans la GridView, mais pas d’insertion.
Afin d’illustrer la requête Where paramétrée nous allons pour commencer; essayer d’afficher un enregistrement dans le DetailsView lorsque l’on clique sur la GridView.

Commençons par modifier la requête de la DataSource2

  1. On enlève les crochets ([ et ])
  2. On remplace la paramètre ? par @CLI_ID

SelectCommand="SELECT [CLI_ID], [CLI_NOM], [CLI_CREATION], [CLI_VALIDE] FROM [clients] WHERE ([CLI_ID] = ?)">
Devient
SelectCommand="SELECT CLI_ID, CLI_NOM, CLI_CREATION, CLI_VALIDE FROM clients WHERE (CLI_ID = @CLI_ID)">

Insérons un DetailsView et affectons lui SqlDataSource2 comme source de données.
Lançons la page dans l’explorateur.
Cliquons sur Sélectionner

Sélection DetailsView
OK, ce n’est pas très beau, mais ça fonctionne.

Insertion

Dans le smart Tag du DetailsView nous ne trouvons que la pagination, mais ni mise à jour ni insertion.

Pourquoi ?

Tout simplement parce que la DataSource associée n’inclue qu’un SelectCommand.
Elle n'a pas les informations pour gérer l'insertion des données.

Pour permettre l’insertion, déplaçons la partie Insertion de SQLDataSource1 vers DataSource2 puisque l’insertion ne s’effectuera pas dans la GridView.

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:basetestConnectionString %>"
InsertCommand="INSERT INTO clients (CLI_ID, CLI_NOM, CLI_CREATION, CLI_VALIDE) VALUES (@CLI_ID, @CLI_NOM, @CLI_CREATION, @CLI_VALIDE)"
ProviderName="<%$ ConnectionStrings:basetestConnectionString.ProviderName %>"
SelectCommand="SELECT CLI_ID, CLI_NOM, CLI_CREATION, CLI_VALIDE FROM clients WHERE (CLI_ID = @CLI_ID)">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="CLI_ID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="CLI_ID" Type="Int32" />
<asp:Parameter Name="CLI_NOM" Type="String" />
<asp:Parameter Name="CLI_CREATION" Type="DateTime" />
<asp:Parameter Name="CLI_VALIDE" Type="int16" />
</InsertParameters>

</asp:SqlDataSource>

Une fois la modification effectuée, en ouvrant le smart tag du DetailsView on peut activer l’insertion : (magique !)
Activer l'insertion

Lorsque l’on lance l’application, on clique sur Sélectionner pour faire apparaitre le DetailsView, le bouton Nouveau est bien présent.

Je vous fais grâce de faire un test d’insertion, car ça ne fonctionnera pas.

Pourquoi ?

Si vous observez la requête d’insertion, vous voyez que CLI_ID fait partie de la requête et de la liste des paramètres.
Il ne doit pas être présent, car c’est un champ auto incrémenté.
Enlevez-le de la requête Insert et testez l’insertion.
Vous remarquerez dans le code source XHTML que toute modification faite en mode désign est répercutée dans le code.

Avec un peu d’habitude, vous ferrez les modifications directement dans celui-ci, sans passer par les propriétés. C’est un excellent mode d’apprentissage pour bien comprendre ce qu’il se passe.

CLI_ID est toujours présent dans le formulaire, même si il n’est plus utilisé
Pour qu’il ne soit plus visible, il suffit de le retirer de la commande Select

Afin de présenter une application viable il reste encore du chemin à parcourir.

Troisième partie

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir


Vous ètes ici

Accueil Accueil Pour les développeurs MySql et ASP.NET Partie 2