1) You can have the objects in your datasource implement IEditableObject interface. You can take a look at the Syncfusion\Essential Suite\Grid\Samples\DataBound\Hierarchical\Customers that uses a IBindingList datasource.
2) From the GridDataBoundGrid, you can use the RowLeave event which can be cancelled and happens as you leave a row. You can check grid.Binder.IsAnyDirtyField to see if any changes needs saving.
3) There is no AddNewRow event, but you can do this in the RowEnter event checking whether you are on the last row. Here is some code that adds a new row to a DataTable in RowEnter.
Private Sub gridDataBoundGrid1_RowEnter(sender As Object, e As GridRowEventArgs) Handles GridDataBoundGrid1.RowEnter
If Me.gridDataBoundGrid1.Model.RowCount = e.RowIndex Then
Dim dt As DataTable = CType(Me.gridDataBoundGrid1.DataSource, DataTable)
Dim dr As DataRow = dt.NewRow()
’populate your new row however you want
dr(0) = "col0"
dr(1) = "col1"
dt.Rows.Add(dr)
End If
End Sub ’gridDataBoundGrid1_RowEnter
The 2.0 beta will start in a week or so.