<asp:UpdatePanel ID="UpdatePanel2" runat="server"
OnLoad="UpdatePanel2_Load" UpdateMode="Conditional">
<ContentTemplate>
<script type="text/javascript">
myFunction();
</script>
<asp:Label ID="Label1" runat="server" Text="1" Width="18px"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
C#:
if(condition)
{
UpdatePanel2.Update();
}
protected void UpdatePanel2_Load(object sender, EventArgs e)
{
Label1.Text += 1;
}
Label1的值正在改变,但它不会调用myFunction()。我想在一些条件之后再调用一次但不使用setTimeout自动调用,一些想法?
答案 0 :(得分:3)
当UpdatePanel更新DOM并将脚本块重写到DOM中时,它们不会被重新执行。您需要在UpdatePanel完成后触发客户端事件并重新执行JS块:
<script type="text/javascript">
function handleEndRequest(sender, args)
{
var panel = document.getElementById(sender._postBackSettings.panelID);
var scripts = panel.getElementsByTagName('script');
for(var i=0;i<scripts.length;i++) {
eval(scripts[i].innerHTML);
}
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(handleEndRequest);
</script>
答案 1 :(得分:0)
我通过刷新整个页面使其成功