如何在updatepanel更新后调用javascript函数

时间:2009-10-26 16:32:46

标签: javascript c# updatepanel

<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自动调用,一些想法?

2 个答案:

答案 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)

我通过刷新整个页面使其成功