Bonjour,
J'ai un petit probleme lors de l'actualisation de mon DataGridView, apres avoir fait un modification d'une des cellules, la requete d'update est bien effectuee et la modification prise en compte dans SQL Server.
Mais quand je reactualise il me reprend la precedente valeur, j'ai donc voulu recree le DataSource, DataMember, etc. en rappelant la fonction que j'avais creer pour le faire.
Malheuresement une fois a la ligne DataSource, j'ai une erreur "L'opération n'est pas autorisée dans ce gestionnaire d'événements."
Voici donc le code que j'utilise :
Dabors, le programme lance Actualiser, ensuite quand je vais sur l'onglet correspondant, il lance le MouseMove pour charger les donnees dans les ComboBox du DataGridView (seul moyen fonctionnel que j'aie trouvé).
Puis en cas de modification d'une des cellules, il lance normalement le RowValidated.
Jusque la pas de probleme donc, le probleme est après, si je rapasse sur l'onglet, pour recharger les ComboBox, il me remet l'ancienne valeur. Le DataGridView n'est donc pas modifié. J'ai donc remis apres l'update par RowValidated l'appel de Actualiser.
Avec pour retour l'erreur citée plus haut.
Pourriez-vous m'orienter vers une solution qui me permettrait de faire fonctionner mon code, voire une adaptation si vous avez plus simple que ce que j'ai deja fait.
PS : autre petit probleme, le ComboxColonne.DisplayIndex ne fonctionne pas la colonne se met a sa gise en 2eme dans mon cas.
Merci 10000 fois d'avance si vous arrivez a m'aider.
public void Actualiser()
{// GridView Liste Client Onglet Liste Client
dataGridViewClient.DataSource = new G_Clients(connexionSQLServer).Lire("nid");
dataGridViewClient.Columns["nid"].DisplayIndex = 0;
dataGridViewClient.Columns["nid"].HeaderText = "Numero Client";
dataGridViewClient.Columns["sNom"].DisplayIndex = 1;
dataGridViewClient.Columns["sNom"].HeaderText = "Nom";
dataGridViewClient.Columns["sPrenom"].DisplayIndex = 2;
dataGridViewClient.Columns["sPrenom"].HeaderText = "Prenom";
dataGridViewClient.Columns["sAdresse"].DisplayIndex = 3;
dataGridViewClient.Columns["sAdresse"].HeaderText = "Adresse";
dataGridViewClient.Columns["sVillecplt"].Visible = false;
dataGridViewClient.Columns["nTelephone"].DisplayIndex = 5;
dataGridViewClient.Columns["nTelephone"].HeaderText = "Telephone";
dataGridViewClient.Columns["sEmail"].DisplayIndex = 6;
dataGridViewClient.Columns["sEmail"].HeaderText = "E-mail";
dataGridViewClient.Columns["nCotisation"].DisplayIndex = 7;
dataGridViewClient.Columns["nCotisation"].HeaderText = "Cotisation";
dataGridViewClient.Columns["nidLocalite"].Visible = false;
// Creation seulement si la colonne n'as pas deja etee creee
if (createcolumns == 0)
{
DataGridViewComboBoxColumn comboxColonne = new DataGridViewComboBoxColumn();
dataGridViewClient.Columns.Add(comboxColonne);
comboxColonne.DataSource = new G_Localite(connexionSQLServer).LireCB();
comboxColonne.DisplayMember = "sVillecplt";
comboxColonne.ValueMember = "nid";
comboxColonne.HeaderText = "Localite";
comboxColonne.Name = "CBLocalite";
comboxColonne.DisplayIndex = 4;
}
createcolumns = 1;
}
// Chargement Des Combobox du DataGridViewClient et DataGridViewListeDvd
private void TabGestion_MouseMove(object sender, MouseEventArgs e)
{
// Clients
if (TabGestion.SelectedIndex == 3)
{
int nbrcli = dataGridViewClient.RowCount;
for (int i = 0; i < nbrcli; i++)
{
dataGridViewClient.Rows[i].Cells["CBLocalite"].Value = dataGridViewClient.Rows[i].Cells["nidLocalite"].Value;
}
}
// Dvd
if (TabGestion.SelectedIndex == 1)
{
int nbrcli = dataGridViewListeDvd.RowCount;
for (int i = 0; i < nbrcli; i++)
{
dataGridViewListeDvd.Rows[i].Cells["CBRealisateur"].Value = dataGridViewListeDvd.Rows[i].Cells["nidRealisateur"].Value;
dataGridViewListeDvd.Rows[i].Cells["CBEditeur"].Value = dataGridViewListeDvd.Rows[i].Cells["nidEditeur"].Value;
}
}
}
// Mise a jour du clients
private void dataGridViewClient_RowValidated(object sender, DataGridViewCellEventArgs e)
{
if (dataGridViewClient.SelectedRows.Count > 0)
{
int cle = (int)dataGridViewClient.SelectedRows[0].Cells["nid"].Value;
string nom = (string)dataGridViewClient.SelectedRows[0].Cells["sNom"].Value;
string prenom = (string)dataGridViewClient.SelectedRows[0].Cells["sPrenom"].Value;
string adr = (string)dataGridViewClient.SelectedRows[0].Cells["sAdresse"].Value;
string tel = (string)dataGridViewClient.SelectedRows[0].Cells["nTelephone"].Value;
string mail = (string)dataGridViewClient.SelectedRows[0].Cells["sEmail"].Value;
decimal cot = (decimal)dataGridViewClient.SelectedRows[0].Cells["nCotisation"].Value;
int loc = (int)dataGridViewClient.SelectedRows[0].Cells["CBLocalite"].Value;
new G_Clients(connexionSQLServer).Modifier(cle, nom, prenom, adr, loc, tel, mail, cot);
Actualiser();
}
}