Mira yo el datagridview lo lleno de esta manera, eso si esta en vb.net pero = de algo te puede servir.
Código vb.net:
Ver originalImports System.Data.SqlClient
Public Class menu_facturas
Dim cadena As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\KlAuDiO\Mis documentos\Sistema\sistema.mdf;Integrated Security=True;User Instance=True"
Public Function ListarDatos() As DataTable
Dim conexion As New SqlConnection(cadena)
Dim MiAdapter As SqlDataAdapter
'Aca pones la consulta para que te devuelva los datos que te interesan
MiAdapter = New SqlDataAdapter("SELECT DISTINCT F.id_factura AS Id, F.fecha AS Fecha, F.cod_cli AS Cliente, C.rut_cli AS Rut, C.nombre_cli AS Nombre, F.monto_final AS Total, F.orden_compra AS Orden, F.obs_factura AS Observaciones FROM cliente C, factura F, detalle D, producto P WHERE C.cod_cli=F.cod_cli AND F.id_factura=D.id_factura AND D.id_prod=P.id_prod", conexion)
Dim MiDataSet As New DataSet
Try
MiAdapter.Fill(MiDataSet)
Return MiDataSet.Tables(0)
Catch ex As Exception
End Try
End Function
Private Sub menu_facturas_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'de esta manera llamas a la funcion Listar Datos
DataGridView1.DataSource = ListarDatos()
End Sub
End Class
Espero te sirva
Adios