【发布时间】:2014-11-11 08:17:40
【问题描述】:
我已经在网上寻找答案,但是我尝试过的很多都没有奏效。我在页面上有两个按钮,一个“喜欢”和一个“不喜欢”按钮。
当我单击一个按钮时,更新面板不会更新,但该用户的类似数据会插入到数据库中。
当我第二次单击该按钮时,更新面板会刷新并可以继续单击。我希望更新面板在第一次点击时刷新
<form id="Matches" runat="server" class="form-horizontal">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="VotePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" >
<ContentTemplate>
<div class="row">
<!-- left column -->
<div class="col-lg-12 col-sm-12 col-xs-12">
<div class="text-center">
ail" />
<h1>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></h1>
<div class="btn-group">
<asp:Button ID="Button1" runat="server" CssClass="btn btn-default" Text="Like" OnClick="Button1_Click" /><asp:Button ID="Button2" CssClass="btn btn-default" runat="server" Text="Dislike" OnClick="Button2_Click" />
</div>
</div>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
<asp:AsyncPostBackTrigger ControlID="Button2" />
</Triggers>
</asp:UpdatePanel>
C#代码
protected void Button1_Click(object sender, EventArgs e)
{
uservote.spAddLike(user.getId(), usermatch.getId());
VotePanel.Update();
}
protected void Button2_Click(object sender, EventArgs e)
{
uservote.spAddDislike(user.getId(), usermatch.getId());
VotePanel.Update();
}
【问题讨论】:
-
如果将
ChildenAsTriggers设置为true 会发生什么?还有你在改变什么,你是如何改变更新面板的内容的?uservote.spAddLike有什么东西吗? -
脚本管理器是否需要在表单之外?
-
@JonP 当我将
ChildenAsTriggers设置为 true 时也是如此。我有另一个获取另一个用户的存储过程。这是Page_Load的顶部 -
你的问题。
Page_load在点击事件之前被调用。我会在一个答案中详细说明。 -
@JasonW 我想是的。我遵循了一个教程,他们说把它放在外面。