Linq to SQL DataGridView

Signaler
Messages postés
18
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
26 avril 2010
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour a tous,
Je me casse les dents sur un problème de MAJ de données, j'utilise VS2008 Express et SQL Server 2005 stdr.

Je souhaite Afficher/Ajouter/Modifier/Supprimer les enregistrements d'une table "T1" qui pour colonnes "id" et "libelle" dans un DataGridView "DGV" en passant par LinqToSql, j'ai donc créer un objet "T1Mapping" représentant la structure de ma table T1 ainsi que son DataContext "T1DataContext".

Pour la liaison de données de DGV je passe par un objet BindingSource "BS1" afin de permettre la saisie dans DGV, voici le code:

// Initialisation du datacontext
T1DataContext = new T1DataContext("str_connection");
Table<T1Mapping> aT1Map = T1DataContext.GetTable<T1Mapping>();

// Initialisation de DVG
DGV.AutoGenerateColumns = false;
DGV.Columns["col_id"].DataPropertyName = "Id";
DGV.Columns["col_libelle"].DataPropertyName = "Libelle";
            
// Select query
var query = from a in aT1Map
            where a.Id== 1
            select a;

BS1.DataSource = query.ToList();
DGV.DataSource = BS1;


Jusque la tout va bien, mes données sont affichées correctement et je peux effectuer des saisies dans mon DGV, mais je ne trouve pas comment savoir si l'utilisateur a éffectué des saisies (Ajout/Modif/Suppr).
Quels evenements faut il utiliser au niveau de DGV ou de BS1 pour prendre en compte la saisie et mettre a jour ma DB?????
Merci d'avance.

1 réponse

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Voici un code que je viens de faire qui explique un peu toutes les bases de linq.
Il faut faire un datacontext sur la base northnwind
et comprendra le code.

Ce code n'est pas commenté mais te permettra de voir les mots clés et la maniere de travailler avec linq.

Bonne prog

    var context = new NorthwindDataContextDataContext();
            var q = from c in context.Categories
                    select c;
            dataGridView1.DataSource = q.ToList();

            var cat2 = q.First();
            //on prend une autre categorie exemple la 10ieme
            var cat3 = q.Skip(10).First();
            var cat = new Category();
            cat.CategoryName = "newCat";
            cat.Description = "Newdescription";
            
         //   context.Categories.Attach(cat);
            context.Categories.GetModifiedMembers(cat);
            cat.Description = "Desc2";
            context.Categories.GetModifiedMembers(cat);
            cat2.Description = "Desc3";
            context.Categories.GetModifiedMembers(cat2);
            context.Categories.DeleteOnSubmit(cat3);
            context.Categories.InsertOnSubmit(cat);
            //Recuperation si il y a des modification
              var changes = context.GetChangeSet();

              MessageBox.Show(" update  " + changes.Updates.Count + "insert " + changes.Inserts.Count + " delete " + changes.Deletes.Count);

            foreach (ModifiedMemberInfo modifiedProperty in context.Categories.GetModifiedMembers(cat2))
            {
                MessageBox.Show(modifiedProperty.Member.Name + " from " + modifiedProperty.OriginalValue + " to " + modifiedProperty.CurrentValue);
            }
            //On soumets tous les changements en base
      //      context.SubmitChanges();