Menu Chiudi

Binding Navigator – Errore su eliminazione ultima riga

Usando un controllo di tipo
BindingNavigator, con i pulsanti predefiniti, può succedere che si
verifichino degli errori se, oltre all’evento naturalmente sollevato
dalla funzione ‘BindingNavigatorDeleteItem’ compresa di default, si
inserisca del code behind (per esempio per gestire dei messagebox o per
aggiornare dei controlli a latere).

L’errore che compare è

‘L’oggetto corrente non può essere rimosso dalla lista perché non c’è alcun oggetto corrente’

Nella fattispecie, l’errore generato nasce per esempio nel caso in cui ci si trovi in un datagrid ove è presente l’ultima riga di dati e dalla pressione del pulsante di eliminazione venga gestito un evento tipo

Private Sub BtnDelete_Click(sender As System.Object, e As System.EventArgsHandles BtnDelete.Click


 Try

  If (Me.Validate() And Not (Tab_MapsBindingSource Is Nothing)) Then

     Tab_BindingSource.RemoveCurrent()

     Me.Tab_BindingSource.EndEdit()

     Me.TableAdapterManager.UpdateAll(Me.DataSet)

     Tab_BindingSource.CurrencyManager.Refresh()

     Tab_DataGridView.Refresh()

  End If
   

 

 Catch ex As Exception

 

 End Try

End Sub

Alla
fine della sub, viene lanciato l’evento di default del BindingNavigator
che, non trovando alcuna riga disponibile, scatena l’errore.
Per ovviare a tale problema, è sufficiente impostare la proprietà
DeleteItem del Binding Navigator a ‘nessuno’, come da immagine sotto
riportata

Pubblicato il Sviluppo sw