In ASP.Net you can pass any control a “DataSource” it use the same to populate itself.  How this works and how to create your own data bound control

Check below article written by Mike 

http://blogs.msdn.com/mikechr/archive/2006/03/31/566402.aspx