1. Make sure your query returns only the needed data. No duplicates from query itself.
2. Change this line of code:
GridView1.DataSource = ds;
GridView1.DataSource = ds.Tables;
Not an issue, but you may want to put the GridBind code in Page IsPostback property to avoid grid's rebind on every postback.