2009-09-18 7 views
0

Ok, donc je suis aux prises avec l'utilisation de asp: formview.Événement déclenché par FormView ModeChanging qui n'a pas été traité.

J'ai le formview opérationnel et j'ai ajouté le bouton 'Modifier'.

<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> 

J'ai essayé des solutions thefollowing dans le code derrière - aucun d'entre eux fonctionne:

protected void fwHotelDetails_ItemCommand(object sender, FormViewModeEventArgs e) 
{ 
    if (e.CommandName.Equals("Edit")) 
    { 
     fwHotelDetails.ChangeMode(e.NewMode); 
    } 
} 

et ceci:

protected void fwHotelDetails_ModeChanging(object sender, System.Web.UI.WebControls.DetailsViewModeEventArgs e) 
{ 
    fwHotelDetails.ChangeMode((FormViewMode)e.NewMode); 
} 

En cliquant sur le bouton Modifier ne me donne que l'erreur suivante message:

The FormView 'fwHotelDetails' fired event ModeChanging which wasn't handled

Que faut-il faire de plus?

Cette page est une grande référence pour le contrôleur FormView: http://authors.aspalliance.com/aspxtreme/sys/web/ui/webcontrols/FormViewClass.aspx

Mise à jour: J'ai code mis à jour à refelct suggestion Phaedrus. L'état actuel est que même après avoir cliqué sur le bouton Modifier, le contenu de ItemTemplate est chargé.

+0

Vous ne devriez pas avoir à appeler explicitement fwHotelDetails.ChangeMode ((FormViewMode) e.NewMode). Le mode est changé automatiquement. Essayez de supprimer cette ligne de code et faites-moi savoir si cela a résolu votre problème. – Phaedrus

Répondre

3

Vous devez spécifier la méthode qui gère l'événement ModeChanging. Cet événement est déclenché lorsqu'un contrôle FormView tente de basculer entre les modes d'édition, d'insertion et de lecture seule, mais avant que le mode ne change réellement.

<asp:FormView OnModeChanging="fwHotelDetails_ModeChanging" /> 

Le deuxième paramètre de votre signature de la méthode est 'DetailsViewModeEventArgs' il devrait être 'FormViewModeEventArgs'.

void fwHotelDetails_ModeChanging(Object sender, FormViewModeEventArgs e) 
{ 
} 
+0

Ah .... ok, j'ai ajouté ceci. Maintenant, j'obtiens l'erreur suivante: Aucune surcharge pour 'fwHotelDetails_ModeChanging' ne correspond au délégué 'System.Web.UI.WebControls.FormViewModeEventHandler'. J'ai essayé google pour voir ce que cela signifie ... mais je ne trouve pas de bonne réponse. – Steven

+0

ok, cela a fonctionné. Mais je ne suis pas capable de changer de mode je pense. Parce que lorsque je clique sur le bouton Modifier, il essaye toujours de charger le contenu de Steven

+0

Je marque cela comme résolu et je vais commencer un nouveau thread pour le problème de mode. Merci. – Steven

0

Il suffit d'écrire simplement le code dans Item_Command de 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(); 
      } 

     } 
Questions connexes