DevTrain

Autor: Hannes Preishuber

doppelter Schlüssel bei Insert in ValidationSummary anzeigen

Wenn der Benutzer Eingaben durchführt die gegen die Regeln in der Datenbank verstossen wird einen Exception gefeuert. So wird eine äußert unschöne Seite für einen doppelten Primärschlüssel erzeugt. Um dies zu verhindern kann man in das Event des DataSource Controls das nach der Aktion ausgeführt wird Code platzieren. Dies sind zb Inserted, Deleted, Selected oder Updated. Dort kann man die Exception als behandelt markieren und weitere Aktionen durchführen zb den Modus ändern. Um den Fehler in ValidationSummary anzuzeigen habe ich noch ein CustomValidator Control in der Seite platziert dessen Eigenschaft IsValid im Fehlerfall auf false gesetzt wird.

Protected Sub AccessDataSource1_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)

If Not IsNothing(e.Exception) Then

e.ExceptionHandled = True

FormView1.DefaultMode = FormViewMode.Insert

CustomValidator1.IsValid = False

Else

FormView1.DefaultMode = FormViewMode.ReadOnly

End If

End Sub

Viele Postings in Foren oder Blogs schreiben das dies so nicht möglich ist. Dabei muss man nur beachten das die beiden Validation Controls ausserhalb des FormView Controls platziert werden.

...</asp:AccessDataSource>

<asp:ValidationSummary ID="ValidationSummary1" runat="server" />

<asp:CustomValidator ID="CustomValidator1" Display=none

runat="server" ErrorMessage="Email Adresse bereits vorhanden">

</asp:CustomValidator>

Auch wenn weitere Validator Controls im Formview Template z.B. InsertItemTemplate vorhanden sind, arbeiten die einwandfrei mit dem Validationsummary zusammen. Es wird also nur ein Summary Control benötigt


Erfasst am: 10.10.2006 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=985
© Copyright 2003 ppedv AG - http://www.ppedv.de