Bueno, intentaré explicartelo paso a paso:
Primero creamos un objeto TableAdapter (El objeto TableAdapter proporciona comunicación entre la aplicación y la base de datos mediante instrucciones SQL o Procedimientos Almacenados).
A continuación creamos el DataSet para almacenar temporalmente los datos y poder mostrarlos en el DataGridView.
Cargamos ambos con los datos de la tabla que queremos mostrar y los enlazamos al BindingSource y éste al DataGrid.
El componente BindingSource sirve para enlazar un control a un origen de datos (sería como el control Adodc de VB6).
No es absolutamente necesario en este caso, ya que puedes enlazar directamente el DataGrid con el DataSet prescindiendo del BindingSource. Prueba con éste código y verás que funciona igual:
Código PHP:
oDa.Fill(oDs, rs, "prueba")
DataGridView1.DataSource = oDs.Tables(0)
Un saludo