You should ALWAYS specify the name of Datatable you're populating. This:
C# Code:
  1. da.Fill(ds);
is legal but this:
C# Code:
  1. da.Fill(ds, "gci_requests");
is much better.

If you're going to assign the DataSet itself to the grid's DataSource then you need to set its DataMember too; specifically to the name of the DataTable. Because you did the right thing and specified a name when you populated it then it's simply:
C# Code:
  1. dataGridView1.DataMember = "gci_requests";
  2. dataGridView1.DataSource = ds;
Alternatively you could assign the DataTable itself to the DataSource.