PDA

View Full Version : [C#] backgroundworker e datagridview


Maxti
12-04-2010, 15:19
Ciao a tutti,
ho un problema ne gestire l'aggiornamento di una datagridview in un thread separato. Mi spiego meglio: ho la necessità di interagire con un database utilizzando un dataset che mi mostra le voci in una datagridview. Dato che l'operazione necessita di qualche secondo per essere completata ho pensato di utilizzare un backgroundworker per generare il tableadapter.fill nella tabella del dataset, quest'ultima in binding con la datagridview. Mentre al caricamento del form non ho nessuna eccezzione, se provo a richiamare il backgroundworker da un pulsate per aggiornare il dataset viene generata un'eccezzione sulla datagrid view, che specifica che non c'è nessun valore nell'indice 0 (se la selezione è sulla prima riga).
Qualcuno può aiutarmi?

Grazie

Jay85
12-04-2010, 15:29
Ciao a tutti,
ho un problema ne gestire l'aggiornamento di una datagridview in un thread separato. Mi spiego meglio: ho la necessità di interagire con un database utilizzando un dataset che mi mostra le voci in una datagridview. Dato che l'operazione necessita di qualche secondo per essere completata ho pensato di utilizzare un backgroundworker per generare il tableadapter.fill nella tabella del dataset, quest'ultima in binding con la datagridview. Mentre al caricamento del form non ho nessuna eccezzione, se provo a richiamare il backgroundworker da un pulsate per aggiornare il dataset viene generata un'eccezzione sulla datagrid view, che specifica che non c'è nessun valore nell'indice 0 (se la selezione è sulla prima riga).
Qualcuno può aiutarmi?

Grazie

ma sei obbligato ad utilizzare un dataset per bindare?

gridview.datasource = datareader.executereader();
gridview.databind();

poi... non conosco la query che utilizzi per aggiornare ma suppongo tu abbia un WHERE... è quello che di da fuori l'exception?
e non ho ben capito se hai un "command" select sulla gridview perchè in quel caso ti basta impostargli il datakeynames e non cambia nulla su che indice tu sia...

ma forse non ho ben capito cosa ti serve ... riesci a postare il codice? :(

Maxti
13-04-2010, 08:19
Forse sono riuscito a risolvere. Per evitare l'errore prima eseguire il fill sul dataset pongo il datasource della datagridview a null poi concluso l'aggiornamento ripristino il datasource come era in precedenza.
Comunque non capisco perchè se questa operazione la faccio al caricamento del form il problema non si presenta.