ASP.NET Update GridView -Anweisung
-
26-10-2019 - |
Frage
Ich verwende VS2005 C# und SQL Server 2005.
Ich habe eine Gridview und dies ist meine aktuelle Update -Anweisung:
UpdateCommand="UPDATE [UserData] SET [UserID] = @UserIDe, [Username] = @Username, [Age] = @Age, [MemberType]=@MemberType WHERE [UserID] = @UserID
Die obige Anweisung aktualisiert die Benutzerzeile nach Identifizierung nach UserID
.
Ich möchte jedoch die Variable UserID
zu bearbeiten, also, wenn ich meine bearbeite UserID
Während der Aktualisierung der Tabelle wird die Zeile nicht aktualisiert, weil diese bestimmte UserID
kann nicht existieren.
Wie kann ich das verwenden? UpdateCommand
und aktualisieren Sie die Zeile, indem Sie die identifizieren row number
der bearbeiteten Reihe?
Lösung
Dies kann durch Verfolgung aller Originalwerte erfolgen. Visual Studio erledigt dies für Sie, wenn Sie mit dem Assistenten Ihre SQL -Anweisungen generieren und die Option "Optimistische Genauigkeit verwenden" wie gezeigt auswählen hier.
Ein Beispiel für das generierte SQL kann gefunden werden hier.
Code Beispiel von der Seite:
UPDATE Products SET
ProductName = @ProductName,
UnitPrice = @UnitPrice
WHERE
ProductID = @original_ProductID AND
ProductName = @original_ProductName AND
UnitPrice = @original_UnitPrice
Wenn Sie den Artikel durchlesen, sollten Sie in der Lage sein, dieselbe Abfrageart auf Ihre Situation anzuwenden, da Sie die ursprünglichen Werte verwenden sollten, um die Notwendigkeit eines Primärschlüssels zu umgehen. Ich sollte jedoch darauf hinweisen, dass ein bearbeitbarer Identifikationsschlüssel ein sehr schlechtes Design ist, da Sie nicht garantieren können, dass er einzigartig ist. Sie können sehr einfach die Aktualisierung von mehr als einen Datensatz sowie eine ganze Reihe anderer Probleme beenden.
Andere Tipps
Unter der Rasteransicht muss die Tabelle mindestens eine eindeutige ID haben, um einen Datensatz zu aktualisieren. Wenn Sie die BenutzerID bearbeiten müssen, müssen Sie einen festen Schlüssel in Ihrer Tabelle haben. Nennen Sie es zumindest als UserKey. Ich denke, GridView konnte nur Daten bearbeiten und aktualisieren, solange Sie einen Zeiger auf diese Zeile haben. Entfernen Sie die BenutzerID ansonsten aus der DataKeynames -Sammlung und weisen Sie sie mit den Spalten zu, die Sie für eindeutig halten und sich nicht ändern.