IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Alimentation d'une DATAGRIDVIEWCOMBOBOX par une donnée SQLITE


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Par défaut Alimentation d'une DATAGRIDVIEWCOMBOBOX par une donnée SQLITE
    Bonjour,

    Je cherche à faire une petite appli pour gérer ma compta perso.
    Mes données se trouvent dans une table SQLITE.

    A l’ouverture de mon appli, je veux lire les données dans cette table et les afficher dans un DATAGRIDVIEW.

    J’ai un pb que je n’arrive pas à résoudre :
    Voilà la disposition que je souhaite dans mon DATAGRIDVIEW :

    DATE | LIBELLE | MONTANT | CATEGORIE | SOUS-CATEGORIE | COMPLEMENT | SOLDE

    Les colonnes CATEGORIE et SOUS-CATEGORIE sont des COMBOBOX. Le reste est du TEXTBOX.
    Je n’arrive pas à alimenter les COMBOBOX avec les données lues dans SQLITE .

    Je n’affiche pas mon code car je n’arrive déjà pas à me décider sur la manière de faire pour le DATAGRIDVIEW : est-ce que je construis les colonnes directement dans le DATAGRIDVIEW ? Est-ce que je les construis dans mon programme ?
    C’est une question plutôt générale pour commencer mais comment feriez-vous ?

    Merci pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Par défaut
    Bonjour,

    Etant donné que tu cherches à afficher selon un "template" spécifique, tu vas devoir prédéfinir tes colonnes à l'avance dans ton XAML.
    C'est par ailleurs dans ce fichier (.xaml) que tu pourras alimenter tes comboBox via le binding.

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <DataGrid Grid.Row="1" Grid.Column="1" 
                      AutoGenerateColumns="False" 
                      AlternatingRowBackground="LightGray" 
                      CanUserAddRows="True" 
                      ItemsSource="{Binding DataGridSource}">
                <DataGrid.Columns>
                    <DataGridTextColumn Width="*" Header="Nom" Binding="{Binding Nom}" />
     
                    <DataGridComboBoxColumn Width="*" Header="Prenom" 
                                            SelectedItemBinding="{Binding Prenom}">
                        <DataGridComboBoxColumn.ElementStyle>
                            <Style>
                                <Setter Property="ComboBox.ItemsSource" Value="{Binding Path=DataContext.ComboBox_Prenom, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
                            </Style>
                        </DataGridComboBoxColumn.ElementStyle>
                        <DataGridComboBoxColumn.EditingElementStyle>
                            <Style>
                                <Setter Property="ComboBox.ItemsSource" Value="{Binding Path=DataContext.ComboBox_Prenom, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
                            </Style>
                        </DataGridComboBoxColumn.EditingElementStyle>
                    </DataGridComboBoxColumn>
          </DataGrid.Columns>
    </DataGrid>

    DataGridSource et ComboBox_Prenom sont des ObservableCollection définis dans ton ViewModel.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Par défaut
    Merci pour ta réponse.

    Je ne connaissais pas la solution que tu me donnes (.XAML et BINDING).
    Je vais me documenter.

    Merci pour ton aide.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Par défaut
    Citation Envoyé par killbill81 Voir le message
    Merci pour ta réponse.

    Je ne connaissais pas la solution que tu me donnes (.XAML et BINDING).
    Je vais me documenter.

    Merci pour ton aide.
    Quelle technologie utilises-tu ?
    Fourni-nous du code pour également qu'on puisse répondre plus rapidement

    (La partie de code que je t'ai donnée est pour la techno WPF).

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Par défaut
    Je travaille sous visual studio 2017.

    J'arrange mon code (pour pas trop faire la honte ) suivant ce que tu as dit et je le mettrai.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Par défaut
    Voilà mon code actuel.
    Je voudrai donc que l'enregistrement de CATEGORIE et SOUS_CATEGORIE remonte dans un COMBOBOX.
    A l'inverse si je modifie la valeur de ce COMBOBOX, je veux écrire la nouvelle donnée dans la table SQLITE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            // chemin de la base de données
            string dbPath = "C:\\Users\\janfi\\Google Drive\\PROGRAMMATION\\COMPTA\\WindowsFormsApp1\\compta.db";
     
            public Form1()
            {
                InitializeComponent();
            }
     
            //Au chargement du programme
            private void Form1_Load(object sender, EventArgs e)
            {
                // on ouvre la table SQLITE pour afficher les enregistrements dans une grille
                SQLiteConnection connection = new SQLiteConnection("DataSource=" + dbPath);
                connection.Open();
                SQLiteCommand command = new SQLiteCommand(connection)
                {
                    CommandText = "SELECT DATE, LIBELLE, MONTANT, CATEGORIE, SOUS_CATEGORIE, COMPLEMENT, SOLDE from compte ORDER BY ID DESC"
                };
     
                using (SQLiteDataReader sdr = command.ExecuteReader())
                {
     
                    //create a new Database
                    DataTable table = new DataTable();
     
                    //LOAD DATAREADER INTO THE DATATABLE
                    table.Load(sdr);
                    sdr.Close();
                    connection.Close();
                    //on affiche les données lues dans la grille d'affichage
                    dataGridView1.DataSource = table;
     
                }
            }
        }
    }

    Tu me dis. En même temps je regarde les XAML.
    A+

Discussions similaires

  1. problème d'alimentation d'une donnée COMP-3
    Par elajjouri dans le forum Cobol
    Réponses: 6
    Dernier message: 01/12/2016, 16h23
  2. [9.3] Alimentation d'une vue par la dernière valeur d'une donnée
    Par NDevoucoux dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/10/2014, 10h56
  3. [MySQL] Alimenter la balise SELECT par des données d'une bdd MySQL
    Par af.zakaria dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 12/04/2013, 04h12
  4. Modifier une requête par des données différente
    Par leloup84 dans le forum Requêtes
    Réponses: 9
    Dernier message: 06/03/2006, 14h23
  5. Réponses: 2
    Dernier message: 03/10/2005, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo