无法更新标签外部更新面板

我花了很多时间研究如何在Update面板外更新标签。 最后找到了一些东西,但它没有更新标签。 如果我们刷新页面,它工作正常。 请告诉我代码中的错误或任何新方法。 请在下面找到我的代码。 我认为需要为脚本管理器添加更多代码或者dataItem()谢谢大家的回复! 代码隐藏文件

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class scriptMgr : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void timer_Tick(object sender, EventArgs e) { if (ScriptManager1.IsInAsyncPostBack) { ScriptManager1.RegisterDataItem(Label3, "Hi"); } } } } Aspx page 
enter code here Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(PageLoadingHandler); function PageLoadingHandler(sender, args) { var dataItems = args.get_dataItems(); if ($get('Label3') != null) $get('Label3').innerHTML = dataItems['Label3']; }

如果您需要使用来自服务器的动态内容更新标签,请将其包装在同一更新面板或其他更新面板中。

如果Label文本不是动态的,您可以在触发正确的事件之前使用JS来更改标签。

此外,UpdatePanels会“ 导致回发 ”。 只是你没有注意到它们。

或者你可以这样做:

           

代码隐藏:

 protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "Updated"; } 

您需要使用PageRequestManagerpageLoaded事件。

在页面上的任何内容更新之前引发pageLoading事件。 因此,如果您还在其他任何位置更改标签的内容,那么您在pageLoading事件中所做的更改将会丢失。

因此,当使用pageLoaded事件,该事件是在同步或异步回发的结果刷新页面上的所有内容之后引发的,在此事件中创建的chnages将覆盖在其他任何地方进行的所有更改,并且将是最终的。

  

在代码隐藏事件中添加注册脚本,

 protected void timer_Tick(object sender, EventArgs e) { if (ScriptManager1.IsInAsyncPostBack) { //ScriptManager1.RegisterDataItem(Label3, "Hi"); ScriptManager.RegisterStartupScript(this, this.GetType(), "setLabelOrAnyName", "jQuery(function($) { $('#Label3').text('Whatever')});", true); } } 

这应该工作。

如果你没有使用jQuery库替换代码与simple javascript