Probleme de datagrid

Résolu
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009 - 9 oct. 2006 à 14:18
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009 - 12 oct. 2006 à 08:31
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

hmarchal Messages postés 19 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 27 octobre 2006
11 oct. 2006 à 11:52
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.
3
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
12 oct. 2006 à 08:31
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
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
9 oct. 2006 à 15:26
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.
0
sandra26 Messages postés 92 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 5 août 2009
9 oct. 2006 à 23:05
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
0
Rejoignez-nous