Probleme de datagrid [Résolu]

Signaler
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009
-
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009
-
Salut,
voila jai un pb avec mon datagrid, je travaille sur Visual 2003.
En fait je me suis appercue que si je viens a changer des donnees dans mon datagrid et que je souhaite enregistrer mes changements a l'aide de l'evenement Leave, mon tout dernier changement n'est pas pris en compte.
J'ai d'abord pense que je faisait une mauvaise manip mais j'ai reproduit la situation de facon tres simple et en effet le dernier changement n'est pas pris en compte.
Je vous envois  la partie de code que j'ai recree afin que vous puissiez tester par vous meme.

private

void Form1_Load(
object sender, System.EventArgs e){

OleDbConnection oConnexion=new OleDbConnection();DataSet oDataSet=

new DataSet();

string chemin =Application.ExecutablePath;String p;

p = Application.ExecutablePath;

p=p.Substring(0, p.LastIndexOf("\"));

string strConnString = maConnection
;

oConnexion.ConnectionString=strConnString;

oleDbConnection1 = oConnexion;

 

string str = maRequete;
oleDbConnection1.Open();OleDbCommand cmdnew OleDbCommand(str, oleDbConnection1);OleDbDataAdapter adapter

new OleDbDataAdapter(cmd);DataSet ds =

new DataSet();adapter.Fill(ds);

oleDbConnection1.Close();

dataGrid1.DataSource=ds.Tables[0];

}

private

void dataGrid1_Leave(
object sender, System.EventArgs e){

for

(
int i=0; i<dataGrid1.VisibleRowCount-1; i++){

int nb=Convert.ToInt32(dataGrid1[i,0]);

string code=dataGrid1[i,1].ToString();

string heure=dataGrid1[i,2].ToString();

int montant=Convert.ToInt32(dataGrid1[i,3]);

bool livre=Convert.ToBoolean(dataGrid1[i,4]);
}

}
Voila , par exemple si la derniere manip est de changer le 'nb' alors en mettant un break point sur le Leave et en passant dessus vous verrez que le 'nb' sera le meme qu'il y avait avant changement

Je ne sais pas quoi faire, est-ce que ca vous fait la meme chose et quesque je peux faire?

sandra

4 réponses

Messages postés
19
Date d'inscription
jeudi 28 juillet 2005
Statut
Membre
Dernière intervention
27 octobre 2006

Salut,

Dans l'évênement Leave, essaie au début d'appeler la méthode update() du datagrid. Il y a aussi la méthode invalidateCell().

Si ça ne marche pas, toujours au même endroit, force le datagrid à changer de cellule courante : propriete currentCell du datagrid.
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

Salut,
je te remerci bcp, en effet seulement hier j'ai trouve la solution
Pour celui qui en aurai besoin, comme tu me le conseille jai force la validation en ajoutant la ligne suivante:
monDatagrid.CurrentCell = new DatagridCurrentCell(0, 0);
etant donne que ma colonne 0 est invisible pour l'utilisateur ca marche a coup sur.

sandra
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
est ce que tu valide ton dernier changement? ce que je veux dire, cest est ce que apres ton changement, tu ferme directement ta form, ou est ce que tu change de case dans ton datagrid? si tu ne change pas de case dans ton datagrid ca me semble normal que tu n'aies pas le leave. dans ce cas tente de voir en vérifiant si ta derniere case a été changée dans l'évènement close de ta form.
Messages postés
92
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
5 août 2009

non en effet je ne valide pas mon dernier changement
mon probleme est que je ne trouve pas le moyen de le valider, est-ce que tu aurai une solution?

sandra