If the pushbutton is in the grid itself, clicking it does initiate a validation sequence, BUT the pushbuttonclick event is fired before the validation is completed. This is why the old value is still in the grid in your pushbuttonclick handler.
One solution would be to go ahead and commit the changes to the current cell at the start of your pushbuttonclick handler(the currentcell is still the old cell at this point).
private void gridControl1_PushButtonClick(object sender, GridCellPushButtonClickEventArgs e)
{
GridCurrentCell cc = this.gridControl1.CurrentCell;
if(cc.Renderer is GridNumericUpDownCellRenderer
&& cc.IsModified)
{
cc.ConfirmChanges();
}
//do your work....
}