Salut tout le monde,
Dans ma petite application j'ai un DataSet commun pour plusieurs DataGridView (sous plusieurs forms). Lorsque je veux raffraichir un DataGridView, ça se passe sans souci tant que je met bien la source à null en début de traitement et que je l'affecte à la fin.
Ayant plus de 200 000 lignes dans mon dataset, j'aimerai pouvoir effectuer mon raffraichissement dans un thread à part pour laisser la main à l'utilisateur. J'ai modifie mon code pour avoir la chose suivante :
privatevoid Refresh()
{
this.dataGridView1.DataSource = null;
Thread t = newThread(newThreadStart(RefreshTable));
t.Start();
}
privatevoid RefreshTable()
{
m_DS.Tables[0].Rows.Clear();
m_DA.Fill(m_DS, m_DS.Tables[0].TableName);
}
Ce code me renvoie le message d'erreur suivant uniquement si j'ai 2 DataGridView sur la même source :
L'exception suivante s'est produite dans le DataGridView :
System.IndexOutOfRangeException: L'index 0 n'a pas de valeur.
à System.Windows.Forms.CurrencyManager.get_Item(Int32 index)
à System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32 rowInd
D'après ce que j'ai compris, j'ai qu'un seul de mes DataGridView qui a une source = null, et le fait de fait de faire m_DS.Tables[0].Rows.Clear(); provoque une erreur sur le DataGridView qui a encore une source.
Je vous serez très reconnaissant si quelqu'un saurait me dire comment éviter cette erreur, sachant que pour le moment je ne peux pas accèder à la source de mon autre DataGridView.
Merci.