Die Situation
Ich arbeite viel mit Datenbanken und nutze zum Anzeigen der Daten GridViews. Beim aktuellen Projekt lief das erste GridView perfekt: laden, anzeigen, editieren, löschen usw. Das zweite war auch schnell programmiert, aber beim Testen kam der Schock. Ich wollte nur einen Eintrag löschen, aber es wurden immer 2 entfernt. Schnell die Logik kontrolliert, alles stimmt. Dann den Debugger angeworfen, um zu sehen, was da überhaupt geschieht.

Das Problem
Das Problem war, das RowDeleting Event wurde 2 mal ausgelöst! Das Thema wurde auch schon heiß im Internet diskutiert und ich habe wüste Workarounds gefunden. Die meisten speichern in der Session, dass das Event schon behandelt wurde und fangen damit den zweiten Durchlauf ab. Diese Lösung finde ich äußerst unschön, besser ist dann schon der Vorschlag von Microsoft: MS Artikel
Eigentlich hat ja .NET immer Recht und man selbst hat den Fehler implementiert, hier aber ist es offensichtlich ein anerkannter Bug!

Die Lösung
Wie von Microsoft vorgeschlagen, sollte man entweder aus den ButtonType="Image" einen normalen Button oder einen LinkButton machen. Wem das nicht gefällt, der fügt seinen eigenen ImageButton in ein TemplateField hinzu und nutzt nicht den vorgefertigten DeleteButton von .NET.

Hinweis
  • Das Problem tritt offensichtlich nicht immer auf. Anfangs lief bei mir alles korrekt, dann kam auf einmal der Fehler, momentan läuft es wieder

  • Wenn man dem MS Artikel vertrauen kann, betrifft dieses Verhalten nur IE6 Benutzer