2010-08-01 4 views
5

J'ai une page avec un listview qui montre quelque chose comme des messages. Sur chaque post, il devrait y avoir une "boîte de taux" qui fonctionne de manière similaire au bouton "J'aime" sur facebook. La zone de taux est un contrôle utilisateur, qui a un panneau de mise à jour à l'intérieur.Comment faire UpdatePanel dans le travail ListView?

Si je mets le contrôle avec des valeurs aléatoires dans la page, cela fonctionne très bien - mais quand je le mets dans le ListView, où il devrait être situé, cela ne fonctionnera pas. La méthode est appelée, mais rien ne se passe.

I simplifié un peu le code pour le rendre plus facile à comprendre:

Le contrôle "boîte de vitesse":

protected void OnRateClick(object sender, ImageClickEventArgs e) 
    { 
     Rate++; 
     RateAmountLiteral.Text = Rate.ToString(); 
     RateButton.Visible = false; 
     FeedbackLiteral.Visible = true; 

     rateButtonPanel.Update(); 
    } 

ascx:

<div class="rate_div"> 
    <asp:UpdatePanel ID="rateButtonPanel" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <fieldset> 
       Rate: 
       <asp:Literal ID="RateAmountLiteral" runat="server"></asp:Literal> 
       <asp:ImageButton ID="RateButton" runat="server" ImageUrl="icn_rate.png" 
        OnClick="OnRateClick" /> 
       <asp:Literal ID="FeedbackLiteral" runat="server" Visible="false">Thanks for rating!</asp:Literal> 
      </fieldset> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

ASPX (en utilisant la commande) :

     <asp:ListView ID="PostsView" runat="server" ItemPlaceholderID="itemPlaceHolder2" 
         <LayoutTemplate> 
          <div class="posts_div"> 
           <asp:PlaceHolder ID="itemPlaceHolder2" runat="server" /> 
          </div> 
         </LayoutTemplate> 
         <ItemTemplate> 
          <div class="post_div"> 
           <div class="post_body"> 
            <%# CurrentPost.Body %> 
           </div> 
           <UC:RatingBox id="RatingBox" runat="server" 
           PostID="<%# CurrentPost.ID %>" 
           Rate="<%# CurrentPost.Rate %>"/> 
           By: <a href="<%# CurrentPost.Author.LinkToProfile %>"> 
            <%# CurrentPost.Author.DisplayName %> 
           </a>&nbsp;|&nbsp; 
           <%# CurrentPost.LiteralTime %> 
          </div> 
         </ItemTemplate> 
        </asp:ListView> 

Lors du débogage, j'ai remarqué que les commandes de la méthode "OnRateClick" sont vides et ne contiennent pas les bonnes valeurs. Veuillez nous conseiller

Aussi si vous avez des commentaires sur la façon dont j'ai fait les choses, ne vous tenez pas.

Merci

Répondre

0

Il y a des choses beaucoup que vous ne pouvez pas avoir mis en place, je ne peux pas dire de juste le code du fragment que vous avez donné. Mais assurez-vous de faire ce qui suit: -

1) Placez un ScriptManager "" sur la page.

Si vous utilisez la page principale dans votre application et votre page Web utilise la page principale, lieu gestionnaire de script dans la page principale. Ou bien, vous pouvez également placer le gestionnaire de scripts sur des pages Web spécifiques de toute façon.

2) Ajoutez un déclencheur pour le bouton RateButton dans votre panneau de mise à jour.

Questions connexes