Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2556 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  liaison entre datagrid et base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

liaison entre datagrid et base de données

n°2318528
berduf
Posté le 01-08-2018 à 00:40:45  profilanswer
 

Bonjour à tous, je me tourne à nouveau vers vous car je suis coincé et j'aimerais un peu d'aide. j'ai en fait 2 questions:
 
- La première est simple, j'utilise Visual Studio 2017 et je n'ai pas de datagridview. Est-ce normal?
 
- La seconde concerne de la programmation:
 
Voilà j'essaie de développer un programme de gestion de comptes bancaires en C# en utilisant le pattern MVVM. j'ai créer une base données "Gestion" contenant une table "Entree". Pour le design j'ai un usercontrol  "UserControlEntree" dont le xaml est le suivant:
 

Code :
  1. <UserControl x:Class="CompteBancaire.Views.UserControleEntree"
  2.              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5.              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6.              xmlns:local="clr-namespace:CompteBancaire.Views"
  7.              mc:Ignorable="d"
  8.              d:DesignHeight="450" d:DesignWidth="800"
  9.              DataContext="{Binding Source={StaticResource ServiceLocator},
  10.                                            Path=UserControlEntreeViewModel}">
  11.     <UserControl.Resources>
  12.         <SolidColorBrush x:Key="ColorEntrees" Color="#FF83FD68" Opacity="0.5"/>
  13.         <SolidColorBrush x:Key="BrushTextEntree" Color="#FF037C03"/>
  14.         <SolidColorBrush x:Key="BrushBackGroundEntree" Color="#FF72EC6C" Opacity="0.75"/>
  15.         <SolidColorBrush x:Key="BrushBackgroundMenu" Color="#FF18706C" Opacity="0.05"/>
  16.     </UserControl.Resources>
  17.     <Border>
  18.         <Grid x:Name="GrilleEntree">
  19.             <Grid.RowDefinitions>
  20.                 <RowDefinition Height="30"/>
  21.                 <RowDefinition Height=" *"/>
  22.             </Grid.RowDefinitions>
  23.             <Label Foreground="{DynamicResource BrushTextEntree}" HorizontalAlignment="Center" VerticalAlignment="Center" Content="Entrées " FontStyle="Italic" FontSize="14" FontWeight="Bold" FontFamily="Segoe Print" Grid.ColumnSpan="2" />
  24.             <DataGrid x:Name="DataGridEntree"
  25.                         ItemsSource="{Binding ItemEntree, Mode=TwoWay }"
  26.                         Margin="0,5" Grid.Row="1" BorderBrush="#FF037C03" Foreground="{DynamicResource BrushTextEntree}" AutoGenerateColumns="False" VerticalGridLinesBrush="{DynamicResource BrushTextEntree}" Width="350" FrozenColumnCount="1" HorizontalGridLinesBrush="{DynamicResource BrushTextEntree}" MaxHeight="350" HeadersVisibility="Column" FontFamily="Segoe Print" AreRowDetailsFrozen="True" Grid.ColumnSpan="2" HorizontalAlignment="Center"
  27.                         SelectedItem="{Binding IdEntree}" SelectionMode="Single" >
  28.                      
  29.                 <DataGrid.RowBackground>
  30.                     <SolidColorBrush Color="#FF037C03" Opacity="0.05"/>
  31.                 </DataGrid.RowBackground>
  32.                 <DataGrid.AlternatingRowBackground>
  33.                     <SolidColorBrush Color="#FF037C03" Opacity="0.3"/>
  34.                 </DataGrid.AlternatingRowBackground>
  35.                 <DataGrid.Background>
  36.                     <SolidColorBrush Color="#FF72EC6C" Opacity="0.75"/>
  37.                 </DataGrid.Background>
  38.                 <DataGrid.Columns>
  39.                     <DataGridCheckBoxColumn ClipboardContentBinding="{x:Null}" Header="Valid." Width="50"
  40.                                             Binding= "{Binding ValidationEntree, Mode=TwoWay}"/>
  41.                                          
  42.                     <DataGridTextColumn
  43.                         Binding="{Binding OperationEntree, Mode=TwoWay}"
  44.                         ClipboardContentBinding="{x:Null}" Foreground="{DynamicResource BrushTextEntree}" FontFamily="Segoe Print" Header="Opération" Width="200" CanUserResize="True" CanUserReorder="True" />
  45.                     <DataGridTextColumn
  46.                         Binding="{Binding CreditEntree, Mode=TwoWay}"
  47.                         ClipboardContentBinding="{x:Null}" Foreground="{DynamicResource BrushTextEntree}" FontFamily="Segoe Print" Header="Crédit" Width="98" FontWeight="Bold"/>
  48.                 </DataGrid.Columns>
  49.             </DataGrid>
  50.         </Grid>
  51.     </Border>
  52. </UserControl>


 
j'ai lié ce dernier à un ViewModel dont le code est:
 

Code :
  1. using CompteBancaire.DAL;
  2. using CompteBancaire.Model;
  3. using GalaSoft.MvvmLight;
  4. using GalaSoft.MvvmLight.Command;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Collections.ObjectModel;
  8. using System.ComponentModel;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Input;
  13. namespace CompteBancaire.ViewModel
  14. {
  15.     public class UserControlEntreeViewModel : ViewModelBase
  16.     {
  17.         #region Constructeur
  18.         public UserControlEntreeViewModel()
  19.         {
  20.             SetSourceEntree();
  21.         }
  22.         #endregion
  23.         #region Champs
  24.         private ObservableCollection<CollectionEntree> itemEntree = new ObservableCollection<CollectionEntree>();
  25.         private int idEntree;
  26.         #endregion
  27.         #region Variables
  28.         // Nom de la base de données
  29.         public string NomBase="Gestion.mdf";
  30.         #endregion
  31.         #region Getter et setter pour les bases de données
  32.         public ObservableCollection<CollectionEntree> ItemEntree
  33.         {
  34.             set
  35.             {
  36.                 if (itemEntree != value)
  37.                 {
  38.                     itemEntree = value;
  39.                     RaisePropertyChanged("ItemEntree" );
  40.                 }
  41.             }
  42.             get
  43.             {
  44.                 return itemEntree;
  45.             }
  46.         }
  47.         public int IdEntree
  48.         {
  49.             set
  50.             {
  51.                 idEntree = value;
  52.                 RaisePropertyChanged("IdEntree" );
  53.             }
  54.             get
  55.             {
  56.                 return idEntree;
  57.             }
  58.         }
  59.         #endregion
  60.         #region Affichage des entrées
  61.        
  62.         private void SetSourceEntree()
  63.         {
  64.             GestionContext BddGestion = new GestionContext(NomBase);
  65.             int ComptEntree = BddGestion.Entrees.Count<Entree>();
  66.                 var query = (from c in BddGestion.Entrees select c).ToList();
  67.                 for (int i = 0; i < ComptEntree; ++i)
  68.                 {
  69.                     ItemEntree.Add(new CollectionEntree { ValidationEntree = (query[i].Validation), OperationEntree = query[i].Operation, CreditEntree = query[i].Credit });
  70.                 }
  71.         }
  72.         #endregion
  73.        
  74.     }
  75. }


 
le datagrid se rempli sans problème et affiche bien les données de ma table "Entree".
 
Voici ce que j'aimerais faire:
Lorsqu'un utilisateur entre de nouvelles données de le datagrid et qu'il appui sur ENTER il faudrait que la base de donnée se mette à jour.
J'ai essayé plein de choses mais rien ne fonctionne. De plus j'ai l'impression que mon observablecollection ne détecte pas les changements.
Il y a certainement un événement déclenché par l'appui sur ENTER mais je ne trouve pas.
 J'espère avoir été assez clair.
 
Merci d'avance pour votre aide
 

mood
Publicité
Posté le 01-08-2018 à 00:40:45  profilanswer
 

n°2318742
berduf
Posté le 06-08-2018 à 12:45:38  profilanswer
 

Help à tous
Je sais je ne suis qu'un débutant qui doit très mal écrire ces programme et ne rien comprendre au c# et à MVVM et c'est bien pour cela que je fait appel à vous.
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  liaison entre datagrid et base de données

 

Sujets relatifs
Bien placer la base de données sur PHPmyadminRécupération des données json
[JS] formulaire de modification de données XML avec XPath[HTML/PHP/CSS] Diff de 2 données
Création base de données avec Entity code first[Symfony 3.3.6] Récupération de données
LibreOffice.Base : Dédoublonner : Jointure de 2 tablesSauvegarde d'images dans une base de donnée
Plus de sujets relatifs à : liaison entre datagrid et base de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR