J'essaie de lier un DataGridView
à un tableau de données dans une base de données. Je veux que le DataGridView
mette à jour le tableau de données automatiquement (sans avoir à cliquer sur "Enregistrer" ou quelque chose comme ça). Il me semble que la meilleure façon de le faire est de gérer l'événement RowValidating
. J'ai testé ce code et c'est mon problème: disons que j'ajoute la ligne # 1 (ligne # 1, mais pas nécessairement la première ligne) en tapant la dernière ligne vide dans le DataGridView
et entrez des données erronées (valeurs nulles où il ne devrait pas y avoir ou texte où il devrait y avoir des nombres, etc.). Ensuite, j'appuie sur Entrée et une nouvelle ligne vide (ligne # 2) apparaît sans message d'erreur. Sur cette nouvelle ligne, je saisis d'autres données, erronées ou non, et j'appuie à nouveau sur Entrée. Maintenant, je reçois un message d'erreur et une bulle d'erreur apparaît sur la ligne n ° 1, mais sur la ligne n ° 2 et si j'essaie d'éditer la ligne n ° 1, un message d'erreur s'affiche à nouveau et la ligne n ° 2. Comment dois-je gérer cela?Comment réparer un problème avec DataGridView.RowValidating
public Form1()
{
InitializeComponent();
sqlCeConnection.Open();
table = new DataTable();
sqlCeDataAdapter = new SqlCeDataAdapter("SELECT * FROM test", sqlCeConnection);
SqlCeCommandBuilder cBuilder = new SqlCeCommandBuilder(sqlCeDataAdapter);
sqlCeDataAdapter.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;
}
private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
try
{
sqlCeDataAdapter.Update(table);
}
catch (Exception ex)
{
e.Cancel = true;
MessageBox.Show(ex.Message);
}
}
Quel message d'erreur obtenez-vous lorsque vous essayez de changer de focus à la ligne 1? –
Tout ce qui ne va pas avec la ligne # 1. Je génère l'erreur dans le but que j'explique dans mon message, et le 'MessageBox.Show (ex.Message);' dans mon code le montre. Le problème n'est pas l'erreur. Le problème est que l'erreur apparaît après avoir ajouté la ligne 2 au lieu de la ligne 1, c'est-à-dire celle qui contient l'erreur. – Juan