C'è un modo per associare caselle di testo in un modulo web in modo che i dati si salva con l'utente digita?

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

Domanda

Ho nel mio webform molti TBs associato a una proprietà nel codice sottostante:

<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>

Mentre il Contatto è quella proprietà.

Vorrei che quando l'utente inserisce del testo, deve essere immediatamente associato all'oggetto Contatto, per esempioquando l'utente preme un tasto o anche quando la perdita di messa a fuoco (TextChanged) sarebbe stato troppo buono.

C'è un modo per farlo in modo dinamico (piuttosto che manualmente recuperare i dati da tutti i TBs e aggiorna il Contatto con un oggetto)?

Io sono effettivamente disposti a raggiungere due vie databinding con semplici caselle di testo sviluppa nella forma del corpo.

Nota:Io non ho intenzione di archiviare gli elementi per il DB, naturalmente, voglio solo oggetto (che risiede nella gestione dello stato.

È stato utile?

Soluzione

Ti rendi conto che stai parlando di una applicazione web?È in esecuzione nel browser degli utenti.Per aggiornare un database, è necessario fare un round trip al server tramite AJAX o attraverso un postback.Vuoi davvero fare questo lavoro per ogni sequenza di tasti?


Dai vostri commenti, è evidente che non stai cercando di scrivere il database ad ogni pressione del tasto.

Ancora, l'associazione dati non funziona in questo modo.Associazione dei dati è esclusivamente lato server in azione ASP.NET.Anche l'associazione dati bidirezionale offerta dal metodo Bind funziona solo su un postback completo (anche se ammetto che non l'ho provato con un UpdatePanel).

Come un esperimento, creare una nuova pagina, e impostare fino a due vie databinding (vedere "Utilizzo del FormView per una Più Flessibile di Modifica dei Dati, l'Interfaccia Utente in Una Panoramica di Inserimento, Aggiornamento e Cancellazione dei Dati per un esempio).Una volta che si ottiene lavorare "normalmente", prova a mettere il FormView in un UpdatePanel e vedere se l'associazione funziona ancora.Se è così, vedere se è possibile ottenere l'UpdatePanel a fuoco su ogni battitura.

Altri suggerimenti

smettere di pensare come si sta sviluppando un'applicazione desktop! Perché yo non lo sono. L'oggetto "Contatto" vive sul server mentre vostra casella di testo "vive" al cliente, rinfrescante l'oggetto server sarebbe molto costoso, si dovrà fare trasferimenti asincroni tra il server e il client con i nuovi dati, e di farlo a così intervalli pantaloncini non sarebbe nemmeno possibile. Ho pensato che è possibile aggiungere un ritardo sulla casella di testo dopo il quale si desidera trasferire i dati al server. Perché mai bisogno di questo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top