2016-07-06 5 views
1

Ich habe eine Webseite in ASP.net geschrieben, wo es eine Liste der Mitarbeiter findet, zeigt sie in einer Listview und erlauben dem Benutzer, verschiedene Status für jeden Mitarbeiter zu ändern.mehrere Updates in einem Senden in SPA-Seite

Auf jeder Zeile habe ich Mitarbeiterinformationen wie Name, Geburtsdatum, Adresse und dann 4 Statusfelder, die als Kontrollkästchen angezeigt werden und ein Kommentarfeld, wo der Benutzer einen Kommentar eingeben kann, warum er einen bestimmten Status geändert hat.

Momentan gibt es in Listview eine Schaltfläche zum Bearbeiten, Löschen, wenn sie auf Bearbeiten klicken, die Kontrollkästchen und das Textfeld werden angezeigt, der Benutzer aktualisiert sie und klickt auf Speichern.

asp.net führt ein Postback durch, um die Änderungen für diese Zeile zu speichern und ruft die Daten dann erneut ab, um die Liste zu aktualisieren.

Das Problem, das ich habe, ist die Liste ist sehr groß (mehr als 3000 Namen), so verwende ich Paginierung, um 50 bis 100 Namen auf jeder Seite zu zeigen. Dies ist immer noch ein großes Leistungsproblem, da nach jeder Zeilenaktualisierung eine Abfrage ausgeführt werden muss, um diese Namen erneut abzurufen, und mit ASP.NET generiert der Server den HTML-Code und übergibt alles an den Browser.

Der Kunde möchte, dass die Seite auch für Mobilgeräte geeignet ist. Daher denke ich, die Seite mit Angular am Frontend mit web-api oder mvc.net am Backend wiederherzustellen, das JSON zurückgibt.

Meine Frage gibt es eine einfache Möglichkeit, dies zu tun und den Benutzer den Status für mehrere Mitarbeiter auf der gleichen Seite auf einmal ändern und klicken Sie dann auf eine Übersendung, um alle Änderungen zu aktualisieren? Wenn ich es so mache, werden weniger Abfragen ausgeführt, und es wird für den Benutzer schneller, weil sie nicht nach jeder Zeilenaktualisierung warten müssen.

Alle Beispiele werden sehr geschätzt werden, es sei denn, es gibt eine andere Möglichkeit, dies zu implementieren, in diesem Fall lass es mich wissen.

+0

Warum müssen Sie alle Daten erneut abrufen. Der Client kennt die Daten, die Sie an den Server gesendet haben, daher muss der Server nur einen Wert zurücksenden, der angibt, dass er erfolgreich geändert wurde (oder nicht) und der Client das DOM aktualisieren kann. –

+0

Andere Benutzer haben möglicherweise während dieser Zeit auch einige Daten geändert oder Namen hinzugefügt/gelöscht, so dass ich sie aktualisieren muss. – user3547425

+0

Warum konnten Sie die Zeile, die geändert wurde, nicht einfach aktualisieren? –

Antwort

0

Ich habe einen Gedanken, der vielleicht funktioniert.
Beim Laden Render-Namen und Seitenumbruch verwenden.
Verwenden Sie dann Ajax, um den Beitrag zum Server zu senden und Daten in der Datenbank zu ändern. Wenn die Bearbeitung erfolgreich abgeschlossen wurde, ändern Sie nur die Werte, die mit JavaScript bearbeitet wurden, damit der Benutzer sie anzeigen kann.

+0

Andere Benutzer haben möglicherweise die Daten geändert oder Namen hinzugefügt/gelöscht. Also muss ich sowieso eine Aktualisierung durchführen, aber ich ziehe es vor, es nach einer Seitenaktualisierung einmal zu tun und sie auf irgendwelche Konflikte hinzuweisen. Ich denke nur, dass es nach jeder Zeilenaktualisierung ein Over-Kill ist. – user3547425

+0

Sie können es wie ein Datenraster oder wie Excel haben und wenn Sie fertig sind, haben Sie eine Schaltfläche zum Speichern am unteren Rand, um ihre Änderungen zu speichern. Wenn sie eine Änderung vorgenommen haben und nicht gespeichert haben, lassen Sie sie wissen, ob sie versuchen, die Seite zu verlassen. Wie auch immer, ich glaube nicht, dass das jemals funktionieren wird, denn wenn ich 2 Zeilen ändere, hat jemand vielleicht den 3. geändert und dann beschließe ich, sie zu bearbeiten. –

Verwandte Themen