I have a gridview question that will most likely fall back to my basic lack of understanding of how ASP.NET works: Here goes:

I have a gridview connected to a MySQL database stored procedure using a SqlDataSource object and the gridview is in a panel so that I can scroll through the records returned by the stored procedure, selecting the record I want. I have connected a detailsview object to the same stored procedure and have tied the detailsview to the gridview with a GridView1_SelectedIndexChanged event.

This works, however, during the page postback to fill the detailsview object the gridview resets to selectedindex = 1.

Q1: How can I stop the gridview from resetting each time a record is selected?
Q2: Is the stored procedure being executed during each page postsback?
Q3: Is this the correct way to handle data in this situation, or should I be filling a datatable and binding to that…, or do datatables even work in ASP.NET like they do in a VB.NET windows app?

Thanks