Is there a way of "batching" updates to the screen? I would like to perform all updates and then have the screen re-paint instead of between updates.

You can use LockUpdate( ).  Take a look in the class reference and at the FAQ "When I fill the grid with SetValueRange() it is very slow.  How should I fill the grid with cells?" in the section Cell Data.