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.
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.
Ok, este assunto é o básico do básico, mas a gente ainda tropeça nestes detalhes. Faz parte.