Viene visualizzato il seguente messaggio quando tento di rimuovere l'ultimo elemento in una vista datagrid.InvalidOperationException su Databinding durante la rimozione dell'ultimo elemento nell'elenco
DataBinding non è in grado di trovare una riga nell'elenco adatta per tutti i binding.
Ho la mia impostazione di binding come segue.
ExtendedBindingList<MyClass> bl = new ExtendedBindingList<MyClass>(GetDataFromDB());
BindingSource bs = new BindingSource();
bs.DataSource = bl;
dgv.DataSource = bs;
ExtendedBindingList è solo qualcosa di semplice ho buttato insieme per attuare l'ordinamento e filtraggio e alcuni persistenza dello stato di base. dgv è il DataGridView. GetDataFromDB restituisce un elenco di MyClass.
Il problema si pone solo quando si tenta di rimuovere l'ultimo elemento dal DataGridView utilizzando:
bs.RemoveCurrent();
che funziona in tutti gli altri. Il mio unico suggerimento per una soluzione è rimuovere tutti i binding e riapplicarli ma questa non sembra una soluzione ideale.
MODIFICA L'eccezione viene generata solo dopo che BindingList rimuove con successo l'ultimo elemento in questione. Viene generato in codice esterno, quindi non posso dire esattamente cosa lo stia lanciando.
Quindi, eccomi, chiedo un aiuto :).
Grazie in anticipo, Justin
Sto usando un DataGridView non un Grid, ma questo è essenzialmente quello che sto usando. Funziona ogni volta tranne quando rimuovo l'ultimo oggetto. –
È un DataGridView nel mio esempio. BindingSource viene anche utilizzato, ma si elimina da BindingListEx, non da BindingSource. Prova questo codice. Penso anche che il tuo problema sia in qualche modo correlato all'ultima riga che è per l'aggiunta rapida di righe (AllowUserAddNewRows = true). Ricordo che avevo un problema con esso e quindi ho deciso di disattivarlo (imposta AllowUserAddNewRows su false). – nightcoder
Hmm, ci provo. –