Ho fatto fatica a far funzionare FormViews nel modo in cui Microsoft mi aspetta per circa un giorno e ho trovato un sacco di cose interessanti.Come impedire a FormView di cancellare i valori immessi dall'utente dopo l'attivazione di Insert Method?
posso prendere e.Exception e e.ReturnValue nel gestore di eventi ObjectDataSource.Inserting e posso anche barare e verificare le altre proprietà dell'oggetto nel ObjectDataSource.ObjectDisposing controllando l'e.ObjectInstance ... e ho anche ho appreso che il gestore di inserimento di FormView gira DOPO il gestore di ObjectDisposing quindi se c'è un problema riscontrato ho ancora tempo per reagire ad esso e st e.KeepInInsertMode su true su FormView.
Il mio problema è che sembra che i valori immessi dall'utente nel modulo di inserimento vengano cancellati a prescindere.
Quindi, come impedire a una maschera di eseguire la cancellazione dopo l'attivazione del metodo di inserimento?
(utilizzando ASP.NET + VB)
Non credo postare il mio codice qui sarà davvero fare molto bene e avrei dovuto modificarlo per tagliare fuori roba logica di business riservate ... così ho' Lo salterò per ora.
edit:
Ho trovato una soluzione temporanea e certamente terribilmente cludgy (nel caso in cui nessuno ha mai trova una soluzione reale al problema).
ho una variabile pagina definita come:
Dim eInsertArgs As FormViewInsertedEventArgs
E poi faccio la seguente nel mio gestore ItemInserted
If boolInsertErrorOccurred = False Then
e.KeepInInsertMode = True
eInsertArgs = e
Else
eInsertArgs = Nothing
End If
Poi su ciascuno dei controlli che ho qualcosa di simile a che i controlli evento dati:
If IsNothing(eInsertArgs) = False Then
Dim _sender As TextBox = sender
_sender.Text = eInsertArgs.Values("_FieldName")
End If
L'effetto di questo è che sto impostando i valori TORNA ai valori inviati DOPO ASP.NET associa il FormView al modello (vuoto) predefinito.
Per favore aiutami a trovare una soluzione meno terribile. :)
si dovrebbe presentare la modifica con la soluzione come una risposta. –