2010-02-26 12 views
5

Ich habe mich damit herumgeschlagen, dass FormViews so funktioniert, wie Microsoft es von mir erwartet, und ich habe eine Menge toller Sachen herausgefunden.Wie verhindere ich, dass FormView die eingegebenen Werte des Benutzers löscht, nachdem die Einfügemethode ausgelöst wurde?

Ich kann e.Exception und e.ReturnValue in der ObjectDataSource.Inserting Event Handler und ich kann sogar andere Eigenschaften des Objekts in der ObjectDataSource.ObjectDisposing betrügen und überprüfen, indem Sie die e.ObjectInstance ... und ich sogar hat gelernt, dass FormView's Inserthandler NACH dem ObjectDisposing Handler ausgeführt wird. Wenn ein Problem gefunden wurde, habe ich noch Zeit, darauf zu reagieren und den e.KeepInInsertMode auf dem FormView auf true zu setzen.

Mein Problem ist, es scheint, dass die Werte, die vom Benutzer in das Formular eingefügt werden, unabhängig sind.

Wie verhindere ich, dass ein FormView gelöscht wird, nachdem die Insert-Methode ausgelöst wurde?

(mit ASP.NET + VB)

glaube ich nicht meinen Code veröffentlichen hier wird wirklich viel Gutes tun, und ich würde es ändern müssen, um vertrauliche Geschäftslogik Sachen zu trimmen ... so bin ich Ich werde es jetzt überspringen.

edit:

ich eine temporäre und zwar schrecklich cludgy Lösung gefunden zu haben (falls niemand jemals eine wirkliche Lösung für das Problem findet).

Ich habe eine Seite Variable wie folgt definiert:

Dim eInsertArgs As FormViewInsertedEventArgs 

Und dann in meiner ItemInserted Handler den folgend ich

If boolInsertErrorOccurred = False Then 
     e.KeepInInsertMode = True 
     eInsertArgs = e 
    Else 
     eInsertArgs = Nothing 
    End If 

Dann auf jedem der Kontrollen habe ich so etwas wie dies, dass Kontrollen Datenbindungsereignis:

If IsNothing(eInsertArgs) = False Then 
     Dim _sender As TextBox = sender 
     _sender.Text = eInsertArgs.Values("_FieldName") 
    End If 

Der Effekt davon ist, dass ich die Werte einstelle BACK zu den übergebenen Werten NACH ASP.NET bindet das FormView an die Standardvorlage (leer).

Bitte helfen Sie mir eine weniger schreckliche Lösung zu finden. :)

+0

Sie bearbeiten mit der Lösung als Antwort vorlegen sollen. –

Antwort

1

Sie müssen Ihr eigenes Serversteuerelement erstellen, das vom FormView-Steuerelement erbt.

Public Class MyFormView 
    Inherits FormView 

Protected Overrides Sub OnDataSourceViewChanged(ByVal sender As Object, 
ByVal e As EventArgs) 
    If (MyBase.CurrentMode = FormViewMode.Insert) Then 
      MyBase.RequiresDataBinding = False 
    Else 
      MyBase.OnDataSourceViewChanged(sender, e) 
    End If 
End Sub 

End Class 

Bitte nehmen Sie sich einen Blick auf dieser Seite: http://www.dotnetmonster.com/Uwe/Forum.aspx/asp-net/76885/FormView-Insert

Verwandte Themen