In general, you do not want to call DataBind manually when you're using NeedDataSource because the Grid will do it automatically (or implicitly). When you call it manually, you're just risking "double-data binding" your Grid. For most application scenarios, this should be fine. I have constructed many complex applications with RadGrid and the NeedDataSource method and this has always proved reliable.
An alternative- one that I actually perfer- is to bind your Grid to an ObjectDataSource. The ObjectDataSource enables you to expose your business logic via a Data Source control, which can simplify things like binding, paging, etc. without putting a lot of code in your code behind's NeedDataSource event. Better Speration of Concerns, in other words.
Try some of these suggestions (and those in the articles I linked to) and let me know if you have any additional questions. Enjoy your weekend!