Gibt es eine Möglichkeit Textfelder in einem Webformular zu binden, so dass die Daten speichern, wie die Benutzertypen in ist?

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

Frage

Ich habe in meinem Webformular viele TBs auf eine Eigenschaft im Code gebunden hinter:

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

Während Kontakt ist, dass Eigentum.

Ich mag, dass, wenn der Benutzer Text einfügt, es sofort an das Kontaktobjekt gebunden werden soll z wenn der Benutzer eine Taste drückt nach unten oder auch, wenn der Fokus zu verlieren (Textchanged) wäre zu gut sein.

Gibt es eine Möglichkeit, es dynamisch zu tun (anstatt manuell die Daten aus all TBs abrufen und aktualisieren Sie das Kontaktobjekt)?

Ich bin wirklich bereit, Zwei-Wege-Datenbindung mit einfachen Textfeldern in Form einer Verbreitung zu erreichen.

Hinweis: Ich werde speichern nicht die Einzelteile an die DB natürlich, ich will nur das Objekt (Kontakt), die im Zustand Manager residiert

.
War es hilfreich?

Lösung

Haben Sie erkennen, Sie sprechen über eine Web-Anwendung? Es ist in dem Browser des Benutzers ausgeführt wird. Um eine Datenbank zu aktualisieren, müssen Sie eine Rundfahrt mit dem Server herstellen, entweder durch AJAX oder über einen Postbacks. Wollen Sie wirklich dieses für jeden Tastendruck tun?


Von Ihren Kommentaren, es ist offensichtlich, dass Sie nicht versuchen, auf jedem Tastendruck auf die Datenbank zu schreiben zurück.

Dennoch Datenbindung auf diese Weise nicht funktioniert. Datenbindung ist eine rein serverseitige Aktion in ASP.NET. Auch die Zwei-Wege-Daten durch die Bind-Methode nur auf einer vollständigen Postbacks arbeitet gewährt Bindung (obwohl ich zugeben, dass ich habe es nicht mit einem Update versucht).

Als ein Experiment, erstellen Sie eine neue Seite, und richten Zwei-Wege-Datenbindung (siehe „Verwenden des Formview für eine flexiblere Datenänderung Benutzeroberfläche“ in ein Überblick über das Einfügen, Aktualisieren und Löschen von Daten für ein Beispiel). Sobald Sie es „normal“ arbeiten, versuchen, die Formview in ein Update setzen und sehen, ob der Bind noch funktioniert. Wenn ja, ob Sie die Update auf jedem Tastendruck ausgelöst bekommen können.

Andere Tipps

Hör auf zu denken, wie Sie eine Desktop-Anwendung entwickeln! Da yo nicht. Das „Kontakt“ Objekt wohnt auf dem Server, während der Textbox „lebt“ auf dem Client, wäre das Server-Objekt erfrischend sehr teuer, müssen Sie Asynchron-Übertragungen zwischen dem Server und dem Client mit den neuen Daten zu tun, und es tun bei so kurzen Hosen Abstände auch gar nicht möglich wären. Haben Sie eine Verzögerung auf das Textfeld hinzufügen können, nach dem Sie die Daten an den Server übertragen würde. Warum würden Sie jemals brauchen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top