I'm not sure if I understand the situation correctly, but...
As already pointed out, don't close the connection inside the loop, otherwise the second fetch will fail. Also if you constantly replace the datasource of the grid, only the last one is shown, all other fetches are in vain.
So this looks like you're trying to fill the data in the grid in two phases, first you fetch the initial set of data and the you try fetch prices for the rows previously fetched.
If this is the case, normally these are not done as separate operations. Instead the data is typically fetched in one call and a join is used to correctly fetch data from two tables at the same time. Have a look at
Visual Representation of SQL Joins[
^]