FormView ha generato l'evento ModeChanging che non è stato gestito.
-
22-07-2019 - |
Domanda
Ok, quindi sto lottando con l'utilizzo di asp: formview.
Ho il formview attivo e funzionante e ho aggiunto il pulsante 'Modifica'.
<asp:FormView runat="server" id="fwHotelDetails" DataKeyNames="id" OnDataBound="fwHotelDetails_DataBound" OnModeChanging="fwHotelDetails_ModeChanging" >
<ItemTemplate>
// (..) some code here which outputs some data
<asp:Repeater runat="server" id="repScore">
<ItemTemplate>
<span class="item"> Some output here</span>
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" />
</ItemTemplate>
</asp:Repeater>
<EditItemTemplate>
Test test, anything??
</EditItemTemplate>
</ItemTemplate>
</asp:FormView>
Ho provato le seguenti soluzioni nel codice dietro - nessuno di loro funziona:
protected void fwHotelDetails_ItemCommand(object sender, FormViewModeEventArgs e)
{
if (e.CommandName.Equals("Edit"))
{
fwHotelDetails.ChangeMode(e.NewMode);
}
}
e questo:
protected void fwHotelDetails_ModeChanging(object sender, System.Web.UI.WebControls.DetailsViewModeEventArgs e)
{
fwHotelDetails.ChangeMode((FormViewMode)e.NewMode);
}
Fare clic sul pulsante Modifica mi dà solo il seguente messaggio di errore:
L'evento FormView 'fwHotelDetails' ha generato ModeChanging che non è stato gestito
Cosa bisogna fare di più?
Questa pagina è un ottimo riferimento per il controller FormView: http : //authors.aspalliance.com/aspxtreme/sys/web/ui/webcontrols/FormViewClass.aspx
Aggiornamento: ho aggiornato il codice per rifare il suggerimento Fedro. Lo stato attuale è che anche dopo aver fatto clic sul pulsante Modifica, viene caricato il contenuto di ItemTemplate.
Soluzione
Devi specificare quale metodo gestisce la ModeChanging . Questo evento viene generato quando un controllo FormView tenta di passare dalla modalità di modifica, inserimento e sola lettura, ma prima che la modalità cambi effettivamente.
<asp:FormView OnModeChanging="fwHotelDetails_ModeChanging" />
Il secondo parametro della firma del metodo è 'DetailsViewModeEventArgs', dovrebbe essere 'FormViewModeEventArgs'.
void fwHotelDetails_ModeChanging(Object sender, FormViewModeEventArgs e)
{
}
Altri suggerimenti
Basta semplicemente scrivere il codice nel Item_Command
di formview
protected void formview_ItemCommand(object sender, FormViewCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
formview.DefaultMode = FormViewMode.Edit;
formview.DataBind();
}
if (e.CommandName == "Cancel")
{
formview.DefaultMode = FormViewMode.ReadOnly;
formview.DataBind();
}
}