.NET + GridView-Control + RowUpdating
Rouven
- asp.net
Hallo,
ich hab mich jetzt seit 2 Stunden richtig mit ASP.NET(2) angelegt. Und zwar habe ich in einem User-Control ein GridView platziert. Darin ist eine DataBound-Spalte sowie eine Spalte mit den Options-Links (Update, Delete, ...) angelegt. Als DataSource wird eine IEnumerable-implementierende Klasse verwendet. Die Datenanbindung verläuft soweit erfolgreich, d.h. die Daten werden angezeigt, auf RowEditing reagiert das Ding ebenso korrekt (Anzeige einer Textbox) wie auf RowDeleting. Einzig mit RowUpdating habe ich ein Problem:
(nachfolgend ist e ein Objekt vom Typ GridViewUpdateEventArgs)
if (int.TryParse(GridView1.DataKeys[e.RowIndex].Value.ToString(), out id))
{
String title = ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
...
Hiermit versuche ich (1) die ID des Datensatzes auszulesen (klappt analog löschen wunderbar) und (2) die _neue_ Beschriftung zu erhalten.
Es scheint ein gängiges Defizit zu sein, dass e.NewValues leer ist, wenn man nicht eine der beiden Standard-Datenanbindungen verwendet, sonst wäre das die bevorzugte Variante um an die veränderten Werte zu kommen. Die stattdessen in Büchern bzw. im Netz vorgeschlagene Variante lautet: Man trete an die Zelle und danach das Control heran und lese den Wert aus dem Textfeld direkt aus. Klappt, aber leider ist da der _alte_ Wert drin, und das konsequent.
Kennt jemand das Problem? Ich habe bisher lediglich eine Seite gefunden, bei der vorgeschlagen wurde auf eigene Templates umzusteigen, aber muss das wirklich sein?
MfG
Rouven