我有一个带有列表视图的页面,它显示了一些类似帖子的东西。在每个帖子上应该有一个“费率框”,它的工作方式类似于facebook中的“喜欢”按钮。rate框是一个用户控件,里面有一个更新面板。
如果我将带有一些随机值的控件放在页面中,它会工作得很好-但当我把它放在ListView中时,它不会工作。正在调用该方法,但什么也没有发生。
我对代码进行了一些简化,使其更容易理解:
"rate box“控件:
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“中的控件是空的,并且没有包含正确的值。敬请指教。
另外,如果你对我做事情的方式有任何意见,不要固执己见。
谢谢
发布于 2014-01-21 11:44:49
有很多东西你可能还没有设置,我不能仅仅从你给出的代码片段中判断出来。但请确保您执行以下操作:
1)在页面上放置一个ScriptManager "“。
如果您在应用程序中使用母版页,并且您的网页使用母版页,请将脚本管理器放在母版页中。或者,你也可以在特定的网页上放置脚本管理器。
2)在更新面板中为按钮RateButton添加触发器。
https://stackoverflow.com/questions/3382030
复制相似问题