You should ALWAYS specify the name of Datatable you're populating. This:is legal but this:
C# Code:
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:
dataGridView1.DataMember = "gci_requests";
dataGridView1.DataSource = ds;
Alternatively you could assign the DataTable itself to the DataSource.