Frage

Sagen Sie 100 Datensätze abrufen und sie auf einer Seite angezeigt werden soll. Der Benutzer aktualisiert nur 2 der Datensätze auf der Seite. Jetzt wollen Sie nur die beiden Datensätze zu aktualisieren, und nicht die anderen 98.

Ist es am besten, eine auf der Seite einreichen, dann irgendwie wissen, welche 2 aktualisiert werden, dann nur an die DB diese beiden senden für ein Update?

Was bedeutet die "irgendwie" aus?

Oder würden Sie haben ein Update-Submit-Button für jede Zeile, und haben sie nur den Datensatz aktualisieren seine gebunden an?

War es hilfreich?

Lösung

Natürlich gibt es verschiedene Möglichkeiten, wie Sie dies tun könnte. Im Allgemeinen können Sie sich einige Mühe und serverseitige Verarbeitung speichern Javascript, indem Sie Ihre POST-Daten nur für die Datensätze zusammenzustellen, die sich geändert haben. Zwei Gedanken darüber, wie dies funktionieren könnte:

1) Gehen Sie die Ajax-Route und tun leben , Editieren. So Datensätze werden in einer Tabelle dargestellt und erscheinen als nicht editierbar. Wenn ein Benutzer eine bestimmte Zeile klickt, wird diese Zeile editierbar von Javascript mit dem entsprechenden HTML-Formular on the fly zu erstellen. haben dann entweder ein Submit-Button oder einen anderen Handler (sagen wir, Fokus auf ein anderes Tabellenzeile zu bewegen), die die POST auslösen, die die DB aktualisiert (asynchron über Ihre bevorzugte Ajax-Methode). Glücklicherweise das Mainstream-Frameworks Javascript viel in diesem Bereich helfen kann.

2) Ankreuzfelder - wenn eine Zeile bearbeitet wird, wird das entsprechende Kontrollkästchen aktiviert. Wenn die Senden-Schaltfläche geklickt wird, verwenden Sie JavaScript, um die POST-Daten zu schreiben, indem sie alles in der Reihe, deren Checkbox Grabbing geprüft. Ein Benutzer kann deaktivieren Sie eine Box Änderungen an dieser Zeile abzubrechen, bevor einreichen.

Andere Tipps

Ajax es jQuery oder eine andere JavaScript-Bibliothek und setzen und Update-Button auf jeder Zeile.

Es gibt viele Antworten auf diese Frage und in gewissem Maße sie hängen von Ihren Entwicklungs-Tool und die „Gefühl“ der Website.

Wenn Sie wurden die Umsetzung Ajax das Updates auf einem zeilenweisen Basis zu tun ruft dann diese logisch richtig sein wäre eine Taste pro Zeile haben und es dann mit einem Ajax-Aufruf aktualisiert wird, wenn eine Zeile geändert wurde.

Dies ist auch nur das Szenario, das Datensätze getrennt wurden entwickelt, um zu lösen und ADO.net behandelt diese sehr gut.

So wie immer, die Antwort "Es kommt darauf an!"

Sie können JavaScript verwenden, um jedes Feld zu markieren, wie geändert, wenn ein Benutzer ein Eingabefeld ändert. Erstellen Sie ein versteckten Felder, die die ID der Zeile haben Sie aktualisieren, und schmutzige Flagge. (Wie is_dirty_ $ id) in JavaScript erstellen Sie einen onChange-Handler, der das versteckte Feld als schmutzig setzt. wenn eine Eingabe geändert wird.

Alternativ können Sie versteckte Felder für jeden realen Feld erstellen Sie anzuzeigen. das verborgene Feld würde die Anfangswerte enthalten. Überprüfen Sie jedes Feld auf der Serverseite, um festzustellen, was sich geändert hat.

Sie wahrscheinlich für jeden Datensatz ein last_modified Datum als verstecktes Feld gespeichert werden sollen. Auf diese Weise, wenn ein anderer Benutzer denselben Datensatz aktualisiert, können Sie eine Fehlermeldung, oder ähnliches.

„dieser Datensatz wurde von einem anderen Benutzer aktualisiert“ angezeigt

Ein Submit-Button. Ich könnte Fall sehe ich könnte mehr als eine verwenden, aber im allgemeinen Fall nur ein. (Beachten Sie, das sieht aus wie eine Web-Seite Frage an mich, so dass ich die Beantwortung mit dieser Annahme.)

Es gibt 3 Möglichkeiten, die in den Sinn kommen, die Ihnen die Verfolgung von Änderungen umgehen konnte:

JavaScript: Setzen Sie eine onChange () Funktion auf den Kontrollen, die ein verstecktes Feld aktualisieren. Wenn die versteckt einen Wert hat, dann aktualisiert den dazugehörigen Datensatz. Erfordert JS im Browser, und nicht sagen, welche nur zu aktualisieren Felder, die aufzeichnet.

Viele Formularfelder: Setzen Sie ein verstecktes Feld mit jeder Kontrolle und vergleichen sie alle, wenn sie zurückkommen. Dies wäre hässlich, aber es Ihnen erlauben würde, zu wissen, welche (nicht nur der Datensatz) zu aktualisieren Felder. Es würde auch ermöglicht es Ihnen, zu wissen, ob jemand eine Änderung knöpfte die gestartet.

Sessions: Sie können die ursprünglichen Werte in Session-Variablen legen, dann den Vergleich tun, wenn die Werte zurückkommen. Dies wäre ein wenig eleganter dann viele versteckte Felder sein, und weniger offen für Menschen mit den gebuchten Rück Daten spielen (da Sie sollten nie etwas vertrauen, die zurückkommt, auch in versteckten Feldern). Erfordert Cookies im Browser und Sitzungen auf der Server-Technologie.

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