2010-08-01 5 views
5

Ich habe eine Seite mit einer Listenansicht, die etwas wie Posts zeigt. Auf jedem Beitrag sollte eine "Preisbox" stehen, die ähnlich funktioniert wie der "Gefällt mir" Button in Facebook. Das Tariffeld ist ein Benutzersteuerelement, in dem sich ein Aktualisierungsfenster befindet.Wie mache ich UpdatePanel in ListView arbeiten?

Wenn ich das Steuerelement mit einigen zufälligen Werten auf der Seite platziert, funktioniert es großartig - aber wenn ich es in die ListView, wo es sich befinden sollte, wird es nicht funktionieren. Die Methode wird aufgerufen, aber nichts passiert.

vereinfacht ich den Code ein bisschen leichter zu machen, zu verstehen:

Die "Rate Box" control:

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 (mit der Kontrolle) :

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

Beim Debuggen ist mir aufgefallen, dass die Steuerelemente in der Methode "OnRateClick" leer sind und nicht die richtigen Werte enthalten. Bitte um Rat.

Auch wenn Sie irgendwelche Kommentare über die Art, wie ich Dinge getan habe, halten Sie sich nicht.

Dank

Antwort

0

Es gibt eine Menge Dinge, die Sie möglicherweise nicht einrichten, kann ich nicht von nur den Code sagen Snippet Sie gegeben haben. Aber stellen Sie sicher, dass Sie Folgendes tun: -

1) Legen Sie einen ScriptManager "" auf der Seite.

Wenn Sie Master-Seite in Ihrer Anwendung verwenden und Ihre Webseite verwendet die Master-Seite, Platz Skriptmanager in Masterseite. Alternativ können Sie den Skriptmanager auch auf bestimmten Webseiten platzieren.

2) Fügen Sie einen Auslöser für die Schaltfläche RateButton in Ihrem Update-Panel hinzu.