DataGridView et Linq [WinForms]: Probleme de refresh
testpresta
Messages postés13Date d'inscriptiondimanche 27 mai 2007StatutMembreDernière intervention26 janvier 2009
-
20 janv. 2009 à 08:51
testpresta
Messages postés13Date d'inscriptiondimanche 27 mai 2007StatutMembreDernière intervention26 janvier 2009
-
20 janv. 2009 à 18:50
Bonjour à toutes et à tous !
Je viens de faire une application winforms toute simple en c#:
- J'ai créé une base de données sql server (fichier mdf)
- J'ai créé les classes linq
- J'ai placé un composant datagridview sur ma form
- enfin, j'ai placé le code suivant afin de pouvoir alimenter mon datagridview en données:
MonDataGridView.DataSource db.MaTable.Where(c> (c.champ1=="test"));
Lorsque ce code est exécuté une première fois, il n'y a pas de problème, le datagridview est bien remplit.
Le problème c'est si je modifie les données depuis une autre form et que je ré execute ce code: Les données ne sont pas à jour.
J'ai l'impression que le datagridview met en cache certaines données et je voudrais savoir comment faire pour forcer le datagridview a vider son cache.
Pour info, j'ai déjà essayé plein de choses, appeller update, refresh, avant ou après l'affectation de la datasource et cela ne fonctionnait pas.
testpresta
Messages postés13Date d'inscriptiondimanche 27 mai 2007StatutMembreDernière intervention26 janvier 2009 20 janv. 2009 à 12:41
Merci pour ta réponse mais cela ne fonctionnne pas.
En fait le problème ne vient pas de linq. C'est purement un problème au niveau du datagridview qui fait une sorte de cache...
testpresta
Messages postés13Date d'inscriptiondimanche 27 mai 2007StatutMembreDernière intervention26 janvier 2009 20 janv. 2009 à 18:50
En fait en reprenant le problème depuis le départ, j'ai l'impression que le problème ne vient pas de la datagridview mais de linq.
Je vais te donner ci dessous le code, mais avant, j'aurais du te le préciser, en fait j'ai deux formulaires (winform):
- un qui contient la datagridview
- un qui contient les données pour les consulter ou les modifier quand on double clic sur une ligne dans le datagridview.
Voici le code:
- 1ere form (contient uniquement un datagridview dont le nom est dg1)
- 2eme form (Form2):
Il y a des champs textes dessus et un bouton ok en bas:
Dans la methode ouvrir:
public void ouvrir(int p_id)
{
_id=p_id;
var obj = from c in db.MaTable1 where c.Id== p_id select c;
textBox_nom.Text = obj.First().Nom;
...
ShowDialog();
}
Lorsque l'on clic sur le bouton ok:
private void button_ok_Click(object sender, EventArgs e)
{
var obj = from c in db.MaTable1 where c.Id== _id select c;
obj.Nom = textBox_nom.Text;
...
db.SubmitChanges();