DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
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
        
Datensatz mit FormView einfügen

Das neue Formview Control von ASP.NET 2.0 erlaubt es Datensätze ohne eine Zeile Code in eine Daten Tabelle einzufügen. Bei der Verwendung stellen sich aber zwei Probleme: beim Anzeigen des leeren Formulares und beim speichern.

Wenn ein leeres Formular dargestellt wird sollen eventuell einige Felder bereits vorbelegt werden. Das könnte zb ein Bestelldatum sein, das automatisch mit dem Tagesdatum gefüllt werden soll. Der Benutzer soll das Datum aber eben auch ändern können. Dafür kann das Event Databound verwendet werden. Je nach Modus (zb Insert) wird dann das entsprechende Control mit Findcontrol gesucht, in den Textbox Typ gecastet und mit einem Wert belegt.
Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
        If FormView1.CurrentMode = DetailsViewMode.Insert Then
           
            CType(FormView1.FindControl("BSTDatumTextBox"), TextBox).Text = Date.Now.ToShortDateString
End Sub

Der zweite Teil befasst sich dann mit dem eigentlichen Speichern des Datensatzes. Die Tabelle erfordert oft Werte die nicht vom Benutzer kommen sondern aus der Programmlogik. So wird bei einem Bestelldatensatz in der Position die Bestellnummer eingefügt. Der Benutzer darf darauf natürlich keinen Einfluss haben. Dies lässt sich im INserting Event behandeln. Wenn es sich um Formularfelder handelt kann über die Values darauf zugegriffen werden.

Protected Sub FormView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs)
        e.Values(5) = Bestellnummer
        ' Bug workaround von formview mit Nullwerten
        If e.Values(8) = "" Then
            e.Values(8) = "0"
        End If
End Sub

Um direkt die Parameter des SQL Kommandos vorzubelegen lässt sich auf die Parameters Collection benutzen

SqlDataSource2.InsertParameters(0).DefaultValue = Guid.NewGuid.ToString

Aber auch im ItemInserting Event lassen sich die SQL Parameter setzen. In den Eventargs e findet sich das Command Objekt. Dieses kann die Parameter, auch benannt, ansprechen.
Protected Sub DSAdressen_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs)
        e.Command.Parameters("@Datum").Value = Date.Now
        e.Command.Parameters("@bearbeiter").Value = User.Identity.Name
End Sub

Ergänzung: Das Formview Control hat in der Beta 2 einen bekannten Bug mit NULL Werten.


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

  Erfasst am: 18.08.2005
  Gültig bis: 16.11.2005
8 Ratings
Bewertung: 65,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG