2008-08-22 11 views
5

Tengo varios "ASP: TextBox" controles en un formulario (alrededor de 20).
Cuando se carga el formulario, los cuadros de texto se completan desde una base de datos.
El usuario puede cambiar los valores poblados, y cuando envían el formulario, tomo los valores publicados en el servidor y los guardo condicionalmente (determinado por alguna lógica comercial).
Todos menos uno de los cuadros de texto funcionan según lo previsto.formulario de envío no contiene datos de cuadro de texto [ASP.NET C#]

El cuadro impar, en la devolución de datos, no contiene el valor actualizado que el usuario escribió en el cuadro.
Al depurar la aplicación, es evidente que myTextBox.Text refleja la edad, el valor pre-poblada, no el nuevo valor, suministrado por el usuario.
Cada dos casillas muestra correctamente sus respectivos valores proporcionados por el usuario.

Lo que encontrar una solución.
Mi solución fue básicamente extraer el valor del cuadro de texto del objeto Request.Form: Request.Form[myTextBox.UniqueID], que contiene el valor proporcionado por el usuario.

lo que podría ser pasando, aquí?
Como mencioné, los otros cuadros de texto reciben los valores proporcionados por el usuario muy bien, y este cuadro de texto problemático en particular no tiene ninguna lógica asociada, solo toma el valor y lo guarda.
La principal diferencia entre este cuadro de texto y los demás es que se trata de un cuadro de varias líneas (para ingresar notas), que creo que se representa como una etiqueta HTML "textarea" en lugar de una etiqueta de "entrada" en ASP.NET .

Respuesta

8

¿Está inicialmente la carga de los datos sólo cuando! Page.IsPostBack? Además, ¿está habilitado el estado de vista para el cuadro de texto?

1

recordar el orden de la página de ciclo de vida, y donde está el enlace de datos del formulario.

  • PreInit
  • Init
  • carga
  • su evento de control Handler

Si está leyendo el valor en el controlador de control de eventos, sin embargo, el enlace de datos en Init o de carga, se le tener el viejo valor

El truco es siempre enlazar datos en el evento correcto, o verificar la devolución de datos y no enlazar datos.

2

Sería el segundo Jonathan's response Me gustaría comprobar la configuración de enlace de datos.

Si no necesita ViewState para los cuadros de texto (es decir, no se produce la devolución de datos hasta que se envíe el formulario), debe deshabilitarlo.

Parece que usted no está teniendo problemas al guardar los datos (ya que dijo que ha logrado obtener el control para leer los datos correctos espalda). Por lo tanto, diría que el problema se carga en su código de enlace de datos.

6

esto me pasa todo el tiempo.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     // populate text boxes from database 
    } 
} 
1

¿Está inicialmente la carga de los datos sólo cuando! Page.IsPostBack? Además, ¿está habilitado el estado de vista para el cuadro de texto?

Casi había olvidado comprobar el ViewState, pero terminé recordando que no estaba desactivado antes de hacer mi publicación aquí en SO. Incluso configuré EnableViewState = "true" para asegurarme.

he encontrado la solución, y que coincidió con la mayoría de las respuestas aquí. El formulario de hecho estaba cargando sus datos más de una vez (lo cual es un comportamiento intencional). Implementé un código especial para este campo, y todo está bien.

Gracias por sus respuestas, todo!

Cuestiones relacionadas