It's difficult to be sure without running it, but the first thing you should notice is that CellFormating is called on a per-cell basis: since you are looping through all the rows every time it is called, you may find this to be a source of slowdown.
The first thing to do though, is to get some numbers - until you have a good idea of how much time is being spent where, you can't be sure that you are making any real improvement.
Look at the
Stopwatch class[
^] - it provides you with an accurate method of timing from point to point. Start with a timer around the DataSource setting, and then add one in the CellFormatting event. See what numbers you get, and you can start working out where things are slow.