无法更新标签外部更新面板
我花了很多时间研究如何在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"; }
您需要使用PageRequestManager
的pageLoaded事件。
在页面上的任何内容更新之前引发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
。
- 即使在Asp.Net流中使用ConfigureAwait(false)后死锁也是如此
- 如何在asp.net vnext中注册身份validation类型名称
- ASP.NET MVC在一个视图中创建具有相关对象的对象
- 尝试获取LogWriter类型的实例时出现激活错误,键“”?
- Response.AddHeader(“Content-Disposition”)不在IE6中打开文件
- FileUpload到FileStream
- 如何向下滚动到多行TextBox的底线,Javascript的scrollIntoView无法正常工作
- PostBack期间GridView.DataSource为null
- 会话变量由于某种原因而丢失