DataGrid is an awesome control, but in certain cases when there is lot of data, it's performance is not as expected. Why is this?
Item renderers have to be optimized, nesting of containers within an item renderer avoided and AMF used for data transfer.
First, speed up your item renderers. This means no deep nesting of containers such as HBox / VBoxes, etc. More information on optimizing your item renderers can be obtained from the devnet article - Understanding Flex itemRenderers - Efficiency.
Secondly, use AMF which is a binary transfer protocol and offer significant performance improvements over other message formats as can be observed from this live sample - Census RIA Data Loading Benchmarks.
If you have a lot of data coming in from the server, you can also consider solutions such as lazy loading and paging which split the amount of data transferred from server to client in chunks. Read up about them in the devnet article - Improving RPC Performance.