DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
ASP.NET 2.0: Formular Daten schnell speichern

Ein Formular ist fast auf jeder Web Seite vorhanden. Ob Feedback oder Support jede Art von Datenaufnahme soll einfach möglich sein. In meinen konkreten Beispiel möchte ich einen Fan Club zu meinem ASP.NET 2.0 Crash Kurs Buch realisieren. Wer sich einträgt erhält erweiterte und aktuellere Informationen.

Dabei habe ich für mich zwei Anforderungen aufgestellt.
1) autocomplete soll funktionieren, da man schon x-fach eMail Adresse und Namen in Web Seiten eingegeben hat
2) so wenig wie möglich Code

Um Autocomplete verwenden zu können muss man nur die Namen der Input Elemente gleich und typisch gestalten. Also zb EMail oder PLZ ( siehe http://www.devtrain.de/news.aspx?artnr=932)
Das Problem zu 1 ist, das ASP.NET unbeinflussbar seine eigenen Namen im Browser pro HTML Element erzeugt. Je nach Control verschachtlung kann das dann zb so aussehen.

 <input type="Text" name="ctl00$ContentPlaceHolder1$email"...

Also darf man weder Web noch HTML Server Steuerelemente verwenden, sondern muss auf classic HTML ausweichen.

EMail:<input name="email" type="text" style="width: 305px" /><br />
Name:<input name="name" style="width: 303px" type="text" /><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="anmelden" />

Dann möchte ich möglichst ohne Code arbeiten und verwende deshalb das AccessDatasource Control. Der Zugriff auf die Daten wird dann in den Eigenschaften desselben konfiguriert. Dabei kann man sich die Update und Insert Statemants automatisch erzeugen lassen.

Da wir nur Insert benötigen, habe ich den erzeugten ASPX Code gleich auf  das Nötigste reduziert. Das ist natürlich das Insert SQL Kommando mit den benötigten Feldern und die InsertParameters.

 <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/fanclub.mdb"
 InsertCommand="INSERT INTO [fans] ( [Email], [name]) VALUES ( ?, ?)">
<InsertParameters>
   <asp:Parameter Name="Email" Type="String" />
   <asp:Parameter Name="name" Type="String" />
</InsertParameters>
</asp:AccessDataSource>

Im Click Event des Buttons werden dann die beiden Parameter Werte gesetzt. Dies funktioniert etwas seltsam über den DefaultValue. Die Parameter können per Namen oder in diesem Fall per Index angesprochen werden. Etwas Antik mutet der Zugriff auf die Inhalte der INPUT Elemente per Request.Form oder hier kürzer per Request zu. Das funktioinierte schon in den Anfängen von ASP so und ist auch nicht aufwendiger als ein txtEmail.Text.
Dann wird noch der Insert Befehl der AccessDatasource ausgeführt.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        AccessDataSource1.InsertParameters(0).DefaultValue = Request("email")
        AccessDataSource1.InsertParameters(1).DefaultValue = Request("name")
        AccessDataSource1.Insert()
End Sub

Das war mir eigentlich schon wieder zuviel Code. Drei Zeilen!!!
Es geht kürzer per Deklaration.
Allerdings wird das nicht direkt vom Wizard unterstützt.
Aus den Insert Parametern machen wir nun FormParameter. Dazu benötigen wird ein zusätzliches Attribut Formfield.
 
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/fanclub.mdb"
            InsertCommand="INSERT INTO [fans] ( [Email], [name]) VALUES (?, ?)">
<InsertParameters>
<asp:FormParameter FormField="email" Name="Email" Type="String" />
<asp:FormParameter formfield="name" Name="name" Type="String" />
</InsertParameters>

</asp:AccessDataSource>


Nun muss nur mehr  AccessDataSource1.Insert() aufgerufen werden. So nebenbei wieder 70% weniger Code. (1 Zeile statt 3)


Falls Autocomplete in ihrem Browser nicht geht:
Extras-Internet Optionen-Inhalte-Auto vervollständigen-Option WebAdressen muss aktiviert sein.
Ausserdem in Extras Internetoptionen-Erweitert- Liste Einstellungen, bereich Browser, Verwenden von Autovervollständigen aktivieren.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 08.05.2005
  Gültig bis: 06.08.2005
10 Ratings
Bewertung: 76,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG