¿Hay una manera de unir los cuadros de texto en un formulario web para que los datos es guardar como el usuario escribe?

StackOverflow https://stackoverflow.com/questions/1117600

Pregunta

Tengo en mis WebForm muchos TB unidos a una propiedad en el código subyacente:

<asp:TextBox ID="tbFirstName" Text="<%# Contact.FirstName %>" runat="server" />
<script language="c#">
    public Contact Contact
    {
        get
        {
            return (Contact)ViewState["Contact"];
        }
    }
</script>
<script language="VB">
    Public ReadOnly Property Contact() As Contact
        Get
            return ViewState("Contact");
        End Get
    End Property
 </script>

Mientras contacto es esa propiedad.

Quiero que cuando el usuario inserta el texto, debe ser inmediatamente enlaza con el objeto de contacto, por ejemplo, cuando el usuario pulsa una tecla o incluso cuando la pérdida de enfoque (TextChanged) sería bueno también.

¿Hay una manera de hacerlo de forma dinámica (en vez de manualmente recuperar los datos de todos los bloques TB y actualizar el objeto de contacto)?

De hecho, estoy dispuesto a lograr el enlace de datos bidireccional con los cuadros de texto simples repartidas en el cuerpo formulario.

Nota: No voy a almacenar los elementos de la base de datos, por supuesto, sólo quiero el objeto (de contacto) que reside en el gestor de estado

.
¿Fue útil?

Solución

¿Se dan cuenta que estamos hablando de una aplicación web? Se está ejecutando en el navegador de los usuarios. Con el fin de actualizar una base de datos, usted tiene que hacer un viaje de vuelta al servidor, ya sea a través de AJAX o por medio de una devolución de datos. Es lo que realmente quiere hacer esto para cada golpe de teclado?


A partir de sus observaciones, es evidente que no está tratando de escribir de nuevo a la base de datos en cada golpe de teclado.

Sin embargo, el enlace de datos no funciona de esta manera. El enlace de datos es una acción puramente del lado del servidor en ASP.NET. Incluso los datos bidireccionales unión practicadas por el método de enlace sólo funciona en una devolución de datos completa (aunque admito que no lo he probado con un UpdatePanel).

A modo de experimento, crear una nueva página, y establecer dos vías de enlace de datos (consulte "Uso del FormView de una forma más flexible modificación de datos de interfaz de usuario" en una visión general de Inserción, actualización y borrado de datos para un ejemplo). Una vez que lo consigue trabajando "normalmente", trate de colocar el FormView en un UpdatePanel y ver si el lazo todavía funciona. Si es así, ver si se puede obtener el UpdatePanel para disparar a cada golpe de teclado.

Otros consejos

Deja de pensar como usted está desarrollando una aplicación de escritorio! Porque yo no lo son. El "Contacto" objeto vive en el servidor, mientras que el cuadro de texto "vive" en el cliente y es descanso del objeto de servidor sería muy costoso, usted tiene que hacer transferencias asíncronas entre el servidor y el cliente con los nuevos datos, y hacerlo en intervalos cortos por lo que ni siquiera sea posible. Pensó que usted puede agregar un retraso en el cuadro de texto después de lo cual usted transferir los datos al servidor. ¿Por qué nunca necesita esto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top