La actualización del cuadro de texto asp.net en la devolución de datos de la base de datos muestra el valor anterior

Asp Textbox dentro del panel de actualización muestra el valor de la base de datos en la carga de la página. El botón dentro del panel de actualización activa la devolución de datos. El procedimiento de la base de datos cambia el valor que se mostrará. El texto del cuadro de texto se actualiza desde la base de datos en Page_Load, si (!Page.IsPostBack). Se confirma que al final de Page_Load el cuadro de texto tiene el valor actualizado. El valor mostrado en la pantalla no cambia al valor actualizado.

Según otras publicaciones, he intentado mover la actualización del texto del cuadro de texto al evento OnPreRender con el mismo resultado.

Mi única solución hasta ahora es volver a crear el control con una nueva ID en cada devolución de datos para que no se rellene a partir de los datos publicados (usando la marca de tiempo adjunta a la ID) y encontrar el control por el nombre base usando Regex. De esta manera, puedo mostrar el valor correcto y leerlo en la próxima devolución de datos, pero parece ser una solución engorrosa.

¿Cuál es la forma adecuada de .NET para actualizar un cuadro de texto durante la devolución de datos y tener el valor "pegado"?

preguntado el 22 de mayo de 12 a las 16:05

Consulta: activa la devolución de llamada, que, supongo, llama a un controlador de eventos de botón, que actualiza la base de datos. El evento de carga de la página se ejecutará antes de este evento de clic, por lo que no tendrá el valor actualizado en ese momento. ¿Es esto lo que está sucediendo? -

1 Respuestas

Si usa su texbox solo para mostrar, no debe usar if (!Page.IsPostBack)

Si necesita usar su valor de cuadro de texto. Entonces

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
    TextBox1.Text = %YOUR_INITIAL_DB_VALUE%;
}

protected void Button1_Click(object sender, EventArgs e)
{
  string userInput = TextBox1.Text;
  TextBox1.Text = %YOUR_NEW_DB_VALUE%;
}

contestado el 22 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.