Как я могу вспомнить функцию JavaScript после обновления панели обновления - PullRequest
1 голос
/ 26 октября 2009
<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 ]

3 голосов
/ 26 октября 2009

Когда 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>
0 голосов
/ 03 ноября 2009

Я сделал это, обновив всю страницу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...