public override void NavigateData(mmNavigate navPosition, bool raiseEvents) { if (this.ActiveControl != null) { // Make sure the current UI control value is written back to the data mmDataGrid grid = this.ActiveControl.Parent as mmDataGrid; if (grid != null) { grid.EndEdit(null, grid.CurrentRowIndex, false); DataSet ds = grid.DataSource as DataSet; if (ds != null) { // Determine the table name string TableName = null, ViewName = null; mmBusinessObject BizObj = (mmBusinessObject)mmAppDesktop.FormMgr.GetControlBizObj(grid); if (BizObj != null) { mmBindingStrategyBase.GetBindingSource(BizObj, grid.BindingSourceMember, out TableName, out ViewName); } if (!mmString.Empty(TableName)) { ds.Tables[TableName].Rows[grid.CurrentRowIndex].EndEdit(); } else { ds.Tables[0].Rows[grid.CurrentRowIndex].EndEdit(); } } else { DataView dv = grid.DataSource as DataView; if (dv != null) { dv.Table.Rows[grid.CurrentRowIndex].EndEdit(); } } } else { Control cntrl = this.ActiveControl as Control; if (cntrl != null && cntrl.DataBindings.Count > 0) { this.BindingContext[cntrl.DataBindings[0].DataSource].EndCurrentEdit(); } } } // Check for changes if (this.IsChanged()) { Control CancelControl = this.FocusOnCancelControl; Control SaveControl = this.FocusOnSaveControl; this.FocusOnCancelControl = null; this.FocusOnSaveControl = null; // Ask the user if they want to save changes DialogResult result = this.AskSaveChanges(); this.FocusOnCancelControl = CancelControl; this.FocusOnSaveControl = SaveControl; if (result == DialogResult.Cancel) { return; } } base.NavigateData (navPosition, raiseEvents); }Regards,