I'm guessing that you ran into the exact same thing that Kieth did a couple days ago. When you place a grid in a child container, sometimes the child container's BindingContext gets accessed before the BindingContext of the form is created, so it creates a different instance of the CurrencyManager, which manages the record pointer.
Try this: right after the call to Me.InitializeComponent() in the constructor, set the BindingContext of the grids to the BindingContext of the form. That will tell them all to use the same CurrencyManager.
Like this:
Public Sub New()
'-- InitializeComponent call
Me.InitializeComponent()
'-- Set the BindingContexts
Me.grid1.BindingContext = Me.BindingContext
Me.grid2.BindingContext = Me.BindingContext
End Sub