When dataset object is bound to datasource property of Datagrid, each row of a table is bound to each dataitem of Datagrid. But more than one rows of a table can be bound to a dataitem of Datalist, it depends on the template.
Datagrid provides facility of Sorting and Pagination. This is not readily available in Datalist.
Usually when the data retrieved in the form of Tables then the DataGrid is preferred since the events that are available are more when compared to datagrid and also the formatting the data is also in more flexible in the datagrid when compared to repeater.
Repeater is used only when the dataretrieved need to be shown as a Template that gets repeated then it is preferred. Not much formatting flexibility is there for repeater control when compared to that of datagrid. Paging is not available in Repeater control.
One point I can understand if I am not wrong that whatever you want to do with Repeater control can be done with Datagrid control.