Se usi il SqlDataSource è la cosa più semplice, tu gli dai la query e lui ti torna i dati. Per quanto riguarda il passaggio dei dati hai tante opzioni diverse.
Comunque la base è che le pagine aps.net sono stateless e ciò significa che una volta che i dati sono arrivati al client, vengono eliminati dal server e quindi devi ricrearli. Ci sono diverse maniere per ripristinare lo stato dei dati sul server: La prima è rimandare indietro al server un riferimento a cosa stai visualizzando, (es. un id di un record), oppure il contenuto di un controllo (esempio il testo di una textbox). Ogni controllo server ha una proprietà viewstate che comprime i dati e li manda al client, alla successiva richiesta il cliente rimanda i dati al server. La seconda impostare la cache dei controlli, che permette di mantenere i dati sul server temporaneamente in base a dei criteri che puoi impostare tu (esempio quando cambia un dato in una query ripopoli la cache, oppure la fai durare per tutta la sessione utente, oppure quando posti un nuovo valore in tag HTML "input").
Oppure c'è la session che è rimasta come compatibilità per le vecchie versioni di asp.net che ti tiene i dati memorizzati in memoria sul server per tutta la durata della sessione utente (meglio usare la cache comunque..), inoltre hai la variabile Application che ti memorizza i dati condivisi per tutti gli utenti che accederanno al tuo sito (esempio i dati per una tabella che fa vedere dei dettagli per articoli e-commerce). Comuque in linea generica i dati li passi da una pagina all'altra con i postback, qui c'è una piccola introduzione riguardo a questo concetto:
http://aspnet.html.it/guide/lezione...-postback/