我有一个带有列表视图的页面,显示类似帖子的内容。在每个帖子上应该有一个“费率框”,其工作方式类似于Facebook中的“赞”按钮。费率框是一个用户控件,里面有一个更新面板。
如果我在页面中放置一些随机值的控件,它可以很好地工作 - 但是当我将它放在ListView中时,它应该位于哪里,它将无法工作。正在调用该方法,但没有任何反应。
我简化了一些代码,以便更容易理解:
“费率框”控件:
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(使用控件):
<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> |
<%# CurrentPost.LiteralTime %>
</div>
</ItemTemplate>
</asp:ListView>
调试时我注意到方法“OnRateClick”中的控件是空的,并且不包含正确的值。请指教。
此外,如果您对我做事的方式有任何意见,请不要抱怨自己。
由于
答案 0 :(得分:0)
你可能没有设置很多东西,我只能从你给出的代码片段中分辨出来。但请确保执行以下操作: -
1)在页面上放置一个ScriptManager“”。
如果您在应用程序中使用母版页并且您的网页使用母版页,请将脚本管理器放在母版页中。或者,您也可以将脚本管理器放在特定的网页上。
2)在“更新”面板中为按钮RateButton添加触发器。