Chamando funções Javascript a partir do code-behind no Sharepoint 2010

O cenário

Provavelmente, algum dia, você vai querer chamar funções javascript a partir do código de servidor. Os métodos ScriptManager.RegisterStartupScript()  e ScriptManager.RegisterClientScriptBlock()  ofereçem uma maneira fácil de fazer isso e este é o caminho que você deve seguir.

O Problema

Você escreve o código e nada acontece. A função javascript não é chamada.

A Solução

Chamar o método  ScriptManager.RegisterStartupScript()  de forma correta.

Se você esta usando Update Panels

O primeiro parâmetro do método pede um objeto do tipo Control e a documentação do método é bem específica.

RegisterStartupScript Documentation

Desculpa ai o tamanho da imagem, clique pra vê-la maior

A documentação diz que o Control que vc deve passar como parâmetro é “o controle que esta registrando o script“, e neste caso, quem esta registrando o script não é o link ou botão que vc clicou e sim o update panel que envolve o controle que causou o postback. É por isso que o código da imagem acima funciona perfeitamente.

Se você NÃO estiver usando Update Panels

Precisa explicar? O mesmo método tem uma sobrecarga que pede como primeiro parâmetro uma Page, ou seja, quem vai registrar o script não é mais o Update Panel e sim a própria página.

RegisterStartupScript Documentation 2

Desculpa de novo, clica ai que abre em nova janela.

Ok, este assunto é o básico do básico, mas a gente ainda tropeça nestes detalhes. Faz parte.