Blog de Laurent Valente

Responsable technique Microsoft , Akka technologies

Laurent Valente

moi

Consulatnt technique, Expert Microsoft chez AKKA Technologie.

J'accompagne les équipes sur les différents projets Microsoft.

Ma carte de visite Microsoft

Mon CV

Mon transcript

[.Net] Mise à jour de base de données à partir d’un dataset.

Voilà le problème qui m’a été levé par un client :

Je souhaite travailler avec des dataset car j’ai basé ma solution là-dessus.

Je voudrais écrire le moins de code possible.

Je voudrais avoir 2 onglets un qui contient une grille qui liste le contenu de 3 des colonnes de ma table et dans le deuxième onglet je voudrais des champs texte, check box ou datetime qui correspondent aux autres champs de ma table. Je choisis une ligne dans ma grille et j’ai les champs renseignés en fonction dans le deuxième onglet. Au dessous de mes2 onglets je veux un bouton pour mettre à jours les valeurs que j’aurais modifiées.

Comme ça je dirais que c’est simple mais quand je fais un « dataadapter.update (dataset.matable) », je vois bien que le dataset a pris en compte mes modifications mais rien ne se met à jour dans la table.

Je fais le test sur la solution du client et effectivement les modifications du dataset était rafraichie mais lors du test « dataset.haschanges() » effectivement Visual studio fait comme si de rien n’était et donc ne fait pas de update. L’update ce fait néanmoins si on fait les modifications directement dans la grille.

Voici la solution que j’ai proposée :

On refait l’interface avec 2 onglets et un dataset.

Interface.

Ensuite on va tout gérer avec la fenêtre source de données qui se trouve dans le menu Visual studio sur le sous menu données on choisit afficher les sources de données.

grille

Dans le dataset « MonDataset » on a la table « ShoppingCartItem», on fait glisser donc cette table sur l’interface ce qui nous donne une grille contenant toutes les colonnes de la table donc il ne nous restera plus qu’à rendre invisible les colonnes non désirées (ici nous la laisserons pour voir les résultats).

Malencontreusement, on aussi un « bindingnavigator » qui vient gâcher le paysage et nous masquer les onglets donc on va le mettre en arrière plan.

arriereplan

 

 

 

Mais on se servira de la fonctionnalité d’enregistrement fournie par ce composant.

private void shoppingCartItemBindingNavigatorSaveItem_Click(object sender, EventArgs e)

 

 

 

        {

 

 

 

            this.Validate();

 

 

 

            this.shoppingCartItemBindingSource.EndEdit();

 

 

 

            this.tableAdapterManager.UpdateAll(this.monDataSet);

 

 

 

 

 

        }

 

 

 

Pour ce faire,il suffit de spécifier que le gestionnaire d’évènement pour l’évènement click du bouton sera la méthode définie ci-dessus.

 

 

 

evenement

Un dernier point, positionner les champs dans l’onglet numéro 2. C’est toujours pareil on fait des glisser déplacer depuis la fenêtre source de données vers l’interface.

champs

 

Bien maintenant on teste tout ça :

grille1

On voit que la deuxième lignes à un id de 4 dans la première colonne et une quantité à 5 donc on va mettre cette quantité à 6 pou faire le test.Donc on sélectionne la deuxième ligne et on change d’onglet.

changechamp

 

Et on clique sur le bouton « button1 » pour enregistrer dans la base de données.

Pour vérifier on ferme la solution et on la redémarre, pour voir les valeurs dans la grille.

final

C’est bon et avec ZERO ligne de code, chez nous le client est roi !!!

Posted: Jan 22 2009, 09:34 by laurentv | Comments (1) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: .NET | Privé

Comments

Mutuelle said:

thanks  so much i follow your wedsite,there are a lot of interesting topics

# December 11 2011, 00:27

Add comment




biuquote
  • Comment
  • Preview
Loading

captcha

*