【发布时间】:2014-09-29 15:50:08
【问题描述】:
我正在尝试通过自定义事件更改标签上的文本。当我通过按钮单击事件 (Button1_Click) 更新文本时,一切正常。但是,当我尝试在自定义事件(ArReceiver_OnArDataUpdate)中更新相同的标签时,什么也没有发生。 ArReceiver_OnArDataUpdate 正在正确触发。
为什么我的事件与按钮单击事件的反应不同?我需要做什么才能让我的活动正常进行?
这是 VS2013 中的一个开箱即用的 Web 项目。这是更好解释的代码:
代码背后:
namespace WinReceiver
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
ArReceiver.OnArDataUpdate += ArReceiver_OnArDataUpdate;
}
void ArReceiver_OnArDataUpdate(object sender, ArEventArgs e)
{
labelVoltage.Text = "Reset";
UpdatePanel1.Update();
}
protected void Button1_Click(object sender, EventArgs e)
{
labelVoltage.Text = "Button Clicked";
UpdatePanel1.Update();
}
}
}
Default.aspx:(site.master默认有ScriptManager)
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="labelVoltage" runat="server" Text="..."></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
编辑: 我确实发现this question 说这是不可能的,但是有人可以解释为什么这可能是不可能的吗?我也可以刷新页面,但是当我尝试 Respone.Redirect 时出现异常。
【问题讨论】:
-
由于点击事件会导致回发,这就是点击事件导致按钮标签发生变化的原因。有问题的事件不会这样做(这是一个猜测,因为我不熟悉这个事件)。您可以使用 signalR、AJAX 长轮询或其他一些技术来使服务器事件更新客户端,但我认为您的解决方案有点过于简单,无法按预期工作。
标签: c# asp.net asp.net-ajax updatepanel