2009-09-23 6 views
2

Qu'est-ce que je fais de mal puisque le contenu du < EditItemTemplate> ne s'affiche pas lorsque je clique sur le bouton Modifier?Impossible d'afficher le contenu dans <EditItemTemplate> dans FormView

<asp:FormView runat="server" id="fwHotelDetails" DataKeyNames="id" OnDataBound="fwHotelDetails_DataBound" OnModeChanging="fwHotelDetails_ModeChanging"> 

    <ItemTemplate> 
    //display content here 
    <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" /> 
    </ItemTemplate> 

    <EditItemTemplate> 
    This text should be displayed when I click the Edit button 
    <asp:LinkButton runat="server" ID="UpDateButton" CausesValidation="false" CommandName="Update" Text="Lagre" /> 
    </EditItemTemplate>    

</asp:FormView> 

Mise à jour

Ceci est mon code-behind:

namespace development.templates 
{ 
    public partial class HotelDetails : TemplatePage 
    { 
     static Hotel hotel; 
     protected DataRow drHotel; 
     DataTable dtCriteria; 
     DataTable dtHotel; 
     private HotelCriteria hotelCriteria; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      int hotelID = Convert.ToInt32(Request.QueryString["hotelid"].ToString()); 

      if (!IsPostBack) 
      { 
       if (hotelID != 0) 
       { 
        // Create Hotel instance based on hoteID. 
        hotel = new Hotel(hotelID); 
        drHotel = hotel.hotelData.Rows[0]; 
        dtHotel = hotel.getHotelsByCity(drHotel["city"].ToString()); 


        // Hotel scrore is calculated from a score which is derived from certain criterias. 
        hotelCriteria = new HotelCriteria(hotelID); 
        dtCriteria = hotelCriteria.getHotelCriteria(); 

        //Set datasource for hotel list in right sidebar. 
        hotelListByCity.DataSource = correctList(dtHotel, hotelID); 
        hotelListByCity.DataBind(); 

        // Set datasource for current hotel 
        fwHotelDetails.DataSource = hotel.hotelData; 
        fwHotelDetails.DataBind(); 

       } 
      } 
     } 



     protected void fwHotelDetails_DataBound(object sender, EventArgs e) 
     { 
      //Find the criteria list and set the datasource 
      Repeater rep = (Repeater)fwHotelDetails.FindControl("repCriteriaScore"); 

      rep.DataSource = this.dtCriteria; 
      rep.DataBind(); 

      // Controll is user is logged in. If logged in, then user may add, edit or delete hotel record. 
      System.Security.Principal.IPrincipal user = Context.User; 
      if ((user != null) && user.Identity.IsAuthenticated){ 
       Panel panel = (Panel)fwHotelDetails.FindControl("administrationPanel"); 
       panel.Visible = true; 
      } 
     } 


     protected void fwHotelDetails_ModeChanging(object sender, FormViewModeEventArgs e) 
     { 
      switch (e.NewMode) 
      { 
       case FormViewMode.Edit: 
        MessageLabel.Text = "Edit mode"; 
        fwHotelDetails.ChangeMode(FormViewMode.Edit); 
        break; 
       case FormViewMode.ReadOnly: 
        MessageLabel.Text = "Read mode"; 
        break; 
       case FormViewMode.Insert: 
        MessageLabel.Text = "Insert mode"; 
        break; 
      } 
     } 
    } 
} 
+0

L'hôtel est-il statique? –

+0

Parce que Visual Studio l'a dit? : op – Steven

Répondre

0

Dans votre fonction fwHotelDetails_ModeChanging, ajoutez ceci:

fwHotelDetails.ChangeMode(FormViewMode.Edit) 

à savoir

Protected Sub fwHotelDetails_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewModeEventArgs) Handles fwHotelDetails.ModeChanging 
     fwHotelDetails.ChangeMode(FormViewMode.Edit) 
    End Sub 
+0

Merci pour votre réponse. Je l'ai déjà dans mon code derrière. – Steven

0

Ok, avez-vous essayé de mettre un point d'arrêt sur fwHotelDetails_ModeChanging, puis de déboguer l'application? Est-ce que le point d'arrêt est atteint lorsque vous cliquez sur le bouton Modifier.

Au moins, cela vous dira où se situe votre problème. C'est [1] les événements ne sont pas connectés correctement ou [2] il y a quelque chose qui ne va pas avec ChangeMode.

Je réalise que ce n'est pas une solution mais si vous me dites si le point d'arrêt atteint je peux vous aider davantage.

+0

J'utilise la version gratuite de Visual Studio 2008 - et je n'arrive pas à faire fonctionner le débogage :( – Steven

+0

Que se passe-t-il lorsque vous essayez de déboguer? Vous devriez pouvoir le déboguer en utilisant la version gratuite. Si vous n'arrivez pas à faire fonctionner le débogueur, vous pouvez mettre une "puce traçante" dans le code, ce qui vous dira que la méthode a été exécutée. Au moins, vous saurez si cette méthode est activée car vous serez redirigé depuis votre page vers google.Dans tous les cas, je recommanderais de faire fonctionner le débogueur en priorité car cela vous fera gagner du temps à long terme. – SecretDeveloper

1

Le paramètre EditItemTemplate ne s'affichera pas non plus si l'enregistrement est vide. En d'autres termes, si vous avez une vue de grille que vous sélectionnez un enregistrement de détail qui alimente le formulaire, et qu'il n'y a aucun détail pour l'élément de grille sélectionné, alors le formulaire n'apparaîtra pas du tout. Je vérifie pour voir si l'enregistrement de détail est nul, et si oui, je place le formview ou la vue de détails au mode "d'insertion". afin qu'ils puissent entrer un nouvel enregistrement.

Questions connexes