Prueba a poner el codigo del page_load, dentro de un "if Not page.isPostBack Then"
Código:
If Not Page.IsPostBack Then
Dim dats As New ArrayList
dats.AddRange(CapaDatos.DatosConcretos(dni))
TextBoxNombre.Text = CType(dats.Item(0), String)
TextBoxApellido1.Text = CType(dats.Item(1), String)
TextBoxApellido2.Text = CType(dats.Item(2), String)
TextBoxDni.Text = Request.QueryString("dni")
TextBoxUsername.Text = CType(dats.Item(3), String)
TextBoxPassword.Text = CType(dats.Item(4), String)
permisos.SelectedValue = CType(dats.Item(5), String)
End If
En principio todo está bien, al cargar el formulario lees los datos, y al presionar el boton, envías el contenido de las propiedades text de los textboxs. Nada más simple. A ver si es cuestion de eso.
Saludos.