Es un "problema" con el que se topan muchos programadores cuando se inician en el mundo de ASP.NET
Para empezar no es una falla del ASP.NET, es un problema con la secuencia de tu programa. Debes de recordar que el evento PAGE_LOAD se ejecuta cuando se "carga" la página, es por ello que en una operación de POSTBACK se ejecutará antes de que se ejecute el evento CLICK de tu botón, provocando que la información que tienen los controles vuelva a su estado original.
Para solucionar esto, el código que obtiene los datos debe de ejecutarse dentro de una clausula IF con una condicion que indique si se esta cargando la página por primera vez.
Código PHP:
if(!Page.IsPostback)
{
Codigo de acceso a datos
}
otra forma de hacerlo es añadir esto an inicio del evento:
Código PHP:
if(Page.IsPostback){ return; }
Saludos.