sexta-feira, março 20, 2009

Scripts não funcionam com RegisterStartupScript e RegisterClientScriptBlock

Um simples bloco de comandos em JavaScript não funciona com RegisterStartupScript e RegisterClientScriptBlock após um PostBack.

Para registrarmos um bloco de comandos, utilizamos normalmente o seguinte comando:

Page.ClientScript.RegisterStartupScript(page.GetType(), Guid.NewGuid().ToString(), “alert(‘hello’)”, true);

Em páginas normais, este comando funciona perfeitamente. No entanto, se o controle responsável pelo PostBack estiver dentro de um UpdatePanel, o comando simplesmente deixará de funcionar.

Como o rendering do Ajax é diferente do utilizado pela página, devemos utilizar uma classe estática para registrar o comando:

ScriptManager.RegisterStartupScript(page, page.GetType(), Guid.NewGuid().ToString(), “alert(‘hello’)”, true);

Boa sorte!

EN: If you need this article in English, leave a messege. FR: Si vous avez besoin de ce texte en Français laissez une message à moi. ES: Si usted necesita este artículo en Español, dejame un mensaje.