Ho un DataGridView popolato attraverso BindingSource da una mia classe collection
Sulla Load del Form ho il seguente codice:
Try
cc = New Cli.Clienti() <--- Popola la mia collection
bs = New BindingSource
bs.DataSource = cc
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
dgv.DataSource = bs
Nella collection ho implementato un metodo che mi premette di filtrare i dati e uso sulla
cc.Filtra()
bs.DataSource = cc '<-- DOPO questa riga ho l'errore
Il filtro funziona correttamente, ma se nella Collection ho inizialmente 10 Item e dopo il filtro solo 3 Item, nel momento in cui si ridisegna il DataGridView incappo in un'ecezzione di IndexOutOfRangeException per le Rows che rimangono vuote (7 nell'esempio precedente).
Ho provato a vuotare a priori la collecton Rows (e quindi anche la mia collection e la cosa non mi piace per niente) ma a quel punto non visualizza nemmeno i dati filtrati.
La funzione Filtra della mia collection vuota l'elemento List della collection e lo ripopola applicando il filtro ai dati.
Come posso aggiornare la DataGridView a run-time cambiando il DataSource alla stessa? O meglio, non cambio il Datasource ma il "contenuto" del datasource?
Allego un semplice progetto che replica l'errore.
Vi prego aiutatemi che proprio non capisco...
Grazie
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole