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

Windows Forms Discussion :

Question BindingNavigator / DataGridView


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut Question BindingNavigator / DataGridView
    Bonjour,

    J'ai une question concernant ce composant:

    Je viens de trouver comment faire pour parcourir un DataGridView à l'aide d'un BindingNavigator(parcourir les élements, supprimer, ajouter une ligne).
    Seulement ces modifications ne sont faites que dans le DBGrid, et ne sont pas faites dans ma table SQL Server.


    Quelqu'un aurait une idée concernant la manière dont je peux procéder pour faire ça?

    NB: mon code pour la configuration du BindingNavigator, DataGridView & BindingSource.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                // Charge une table vide dans la source des bindings
                mainBindingSource.DataSource =FilmDAO.GetList();
                // Configure la navigation
                bindingNavigator1.BindingSource = mainBindingSource;
                // Configure la grille de données sur la même source que la source de navigation
                dataGridView1.DataSource = bindingNavigator1.BindingSource;
    GetList() étant une méthode pour créer une liste d'objets :

    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
     
            public static List<Film> GetList()
            {
                List<Film> Films = new List<Film>(); // création d'une liste d'objets
     
     
                DataTable result = DataAccess.executeQuery("SELECT Id_film,Movie,Genre.Genre,Realisateur.Realisateur from Movie INNER JOIN Genre ON Genre.Id_genre = Movie.Id_genre INNER JOIN Realisateur ON Movie.Id_realisateur = Realisateur.Id_realisateur");
     
     
     
                foreach (DataRow dr in result.Rows) // pour chaque ligne on créé un objet.
                {
                    Film f = new Film();
                    f.Id_film = (int)dr["Id_film"];
                    f.Titre = (string)dr["Movie"];
                    f.Genre = dr["Genre"].ToString();
                    f.Realisateur = dr["Realisateur"].ToString();
                    Films.Add(f);
     
                }
     
     
                return Films;
            }
        }
    Merci de votre aide!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    humm je pense qu'il faut que la DataSource soit un DataSet et tu fais un DataSet.AcceptChanges()
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Merci pour ta réponse!
    J'ai plus le code sous les yeux là mais je réessaye ça sous peu!
    Bon week end

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Il n'y a pas de magie derrière le code que tu as écrit. Si tu remplis ta liste avec une requête SELECT, il faut te rendre compte que les requêtes UPDATE,DELETE,INSERT nécessaires à la persistence des changements doivent être aussi écrites quelquepart.

    Au final en ce basant sur ton code actuel: quand tu veux sauvegarder, il faut parcourir ta table, créer des requêtes INSERT pour les nouvelles lignes, des UPDATE pour celles modifiées et des DELETE pour celles supprimées.

    Autre solution comme suggéré, crée un DataSet avec les requêtes SELECT,UPDATE,DELETE,INSERT associées à ton table adapter.

    Troisième solution, mettre en place un outil de mapping objet relationnel pour prendre en charge les opérations de communication avec la base (exemple: NHibernate, LINQ to SQL, Entity Framework, Subsonic, etc.)
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Merci pour ta réponse,
    étant donné que je n'ai pas encore manipulé de DataSet, tu aurais quelque chose à me conseiller pour manipuler ce composant ?
    J'ai trouvé ceci : http://dotnet.developpez.com/articles/ado2/csharp/
    ça correspond?
    Merci

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par arngrimur Voir le message
    Merci pour ta réponse,
    étant donné que je n'ai pas encore manipulé de DataSet, tu aurais quelque chose à me conseiller pour manipuler ce composant ?
    J'ai trouvé ceci : http://dotnet.developpez.com/articles/ado2/csharp/
    ça correspond?
    Merci
    Oui ça te donnera une bonne base de départ
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Ok je pense avoir compris grosso-modo. Par contre un détail dans le tutoriel le CategoryID de wine est 26 dans le tutoriel (cf bas du tuto) , en l'executant sur mon PC j'ai 16. Je ne comprends aucune de ces deux valeurs... tu as une idée ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Points : 101
    Points
    101
    Par défaut
    Autre question, j'imagine que pour faire par exemple une suppression il suffit de créer une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     oSqlDataAdapter.InsertCommand = new SqlCommand(...)
    Mais comment saura-t-il quelle commande utiliser et quand ? et comment lier l'éxécution d'une commande en particulier quand je clique sur le "+" ou sur la croix du BindingNavigator?
    Merci de ton aide

Discussions similaires

  1. Deux petits soucis BindingNavigator/Datagridview
    Par fxbrg dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/04/2009, 13h54
  2. Question sur DataGridView
    Par Kenmath dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/02/2008, 12h38
  3. Question sur le DatagridView
    Par psycho_38 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/05/2007, 17h12
  4. Questions sur le DataGridView
    Par misterdev007 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/03/2007, 14h02
  5. Réponses: 1
    Dernier message: 28/09/2006, 11h43

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