2008-11-07 2 views
5

Ich habe eine GridView, mit der Sie die Werte in jeder Spalte, in jeder Zeile, die ganze Zeit bearbeiten können. Der Benutzer gibt alle Änderungen ein, klickt einmal auf Speichern und alle Änderungen werden ausgeführt.Hinzufügen einer neuen Zeile zu GridView ohne DataBind

Der Benutzer muss auch in der Lage sein, auf die Schaltfläche Neu zu klicken, eine neue Zeile in der GridView erscheinen zu lassen (yep, muss in der GridView erscheinen), geben Sie die gewünschten Daten ein, klicken Sie auf Speichern und alle Änderungen haben Gehe zur Datenbank.

Jetzt. Hier ist der Benutzerfall, der mich anspricht: Ein Benutzer kommt auf der Seite an, nimmt mehrere Änderungen an mehreren vorhandenen Zeilen vor und muss dann eine neue Zeile hinzufügen, Daten in die neue Zeile eingeben, auf Speichern klicken und alle Änderungen in die Datenbank übernehmen .

Die einzige Möglichkeit, die ich gesehen habe, um eine neue leere Zeile hinzuzufügen, besteht darin, die GridView neu zu binden, was bedeutet, dass alle ihre Änderungen verloren gehen. Das ist offensichtlich nicht gut.

Also meine Frage wäre: Was sind einige Ansätze zum Hinzufügen einer neuen, leeren, editierbaren Zeile zu einem GridView, ohne das GridView erneut zu binden?

Das einzige, was ich mir vorstellen kann, wäre, auf der New Buttons klicken Ereignis, saugen alle Daten aus der GridView (einschließlich der Benutzer mögliche Änderungen), speichern Sie in ViewState (oder was auch immer), fügen Sie die neue Zeile, füllen Sie das Raster neu. Dies scheint mir ein bisschen hacky zu sein, aber ich sollte ViewState in GridView deaktivieren.

Irgendwelche Ideen?

Antwort

3

Direkt von meinem Kopf kann ich mir zwei Möglichkeiten vorstellen. Die erste besteht im Zwischenspeichern der ursprünglichen Ergebnisse, die Sie an das Raster binden, und wenn Sie eine weitere Zeile hinzufügen müssen, fügen Sie dem Datenbatal, mit dem Sie eine Bindung eingehen, einen Datenrahmen hinzu und binden diesen dann an das Raster. Wenn sich Änderungen im Raster ergeben, müssen Sie die Datentabelle aktualisieren. Nachdem alle Änderungen vorgenommen wurden und der Benutzer auf die Schaltfläche Speichern klickt, können Sie die Tabelle durchlaufen und die Datenbank mit den Daten aktualisieren.

es so

Seite Lasten aussehen könnte

  • DB Daten importieren und in eine Tabelle
  • Binden Sie die Tabelle an das Netz
  • Speichern Sie die Tabelle in ein Cache

Wenn Benutzer bittet um eine neue Zeile

  • Holen Sie sich das Cache-Daten-Objekt.
  • aktualisieren alle Zeilen, die
  • Fügen Sie eine leere Zeile binden an das Netz

Wenn der Benutzer speichert das Gitter

  • Holen Sie sich das zwischengespeicherte Objekt geändert haben.
  • Machen letzten Satz von Updates
  • Schleife durch die Reihe und Aktualisierung der DB

Die andere Art und Weise, indem das Gitter dies dynamisch zu tun, aber das wird viel mehr Aufwand verbunden, als es wert, was Ihnen gegeben hat habe beschrieben.

0

Sie könnten die neue Zeile dynamisch über Javascript hinzufügen und beim Speichern nach neu hinzugefügten Zeilen suchen. Das ist ziemlich üblich.