Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I Prevent FormView from clearing user's entered Values after Insert Method has fired?

I have been struggling with getting FormViews to work the way Microsoft expects me to for about a day and have figure a bunch of great stuff out.

I can catch e.Exception and e.ReturnValue in the ObjectDataSource.Inserting Event Handler and I can even cheat and check other properties of the Object in the ObjectDataSource.ObjectDisposing by checking the e.ObjectInstance ... and I even learned that FormView's Inserting Handler Runs AFTER the ObjectDisposing Handler so If there is a problem found I still have time to react to it and st the e.KeepInInsertMode to true on the FormView.

My problem is, it seems that the values entered by the user into the Insert form are cleared regardless.

So, How do I Prevent a FormView from clearing after it's Insert Method has fired?

(Using ASP.NET + VB)

I don't think posting my code here will really do much good and i would have to modify it to trim out confidential business logic stuff... so I'll skip it for now.

edit:

I have found a temporary and admittedly terribly cludgy solution (in case no one ever finds a REAL solution to the problem).

I have a page variable defined as:

Dim eInsertArgs As FormViewInsertedEventArgs

And then I do the following in my ItemInserted handler

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

Then on each of the controls I have something like this in that controls databinding event:

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

The effect of this is that I am setting the values BACK to the submitted values AFTER ASP.NET binds the FormView to the default (blank) Template.

Please help me find a less terrible solution. :)

like image 531
SinbadEV Avatar asked Nov 15 '22 12:11

SinbadEV


1 Answers

You need to create your own server control which inherits from the FormView control.

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

Please take a look at this page: http://www.dotnetmonster.com/Uwe/Forum.aspx/asp-net/76885/FormView-Insert

like image 154
DSXP Avatar answered Dec 10 '22 08:12

DSXP