16 agosto 2008

Javascript "confirm" e "Attributes.Add" no ASP

Como colocar uma caixa de confirmação para uma operação numa página asp.net?

É simples... Depois de algumas chatices.

Na zona do Page Load, colocar:
If Not Page.IsPostBack Then
LinkButton1.Attributes.Add("OnClick", "return confirm('Deseja mesmo sair da aplicação?');")


O que esta operação faz é associar um evento e a acção deste a um objecto. Neste caso, a um Linkbutton, associei o evento "OnClick" e a acção é um comando Javascript que vai devolver true ou false mediante se pressione OK ou Cancelar.

Na página aspx, o código fica assim:

< asp:linkbutton id=LinkButton1 onclick="LinkButton_Click" runat="Server" Visible="True">
sair< /div>< /asp:LinkButton>


No atributo OnClick, coloquei o nome de uma função, que colocando no .aspx ou no .vb (com as devidas mudanças) é a seguinte:

< script language=VB runat="server">

Sub LinkButton_Click(sender As Object, e As EventArgs)
"operações a efectuar"
End Sub
< /script>


O que tudo isto vai fazer é que ao se clicar no linkbutton, o que foi colocado na secção de PageLoad é o que corre primeiro. Ou seja, começa por me perguntar se 'Deseja mesmo sair da aplicação?'.

Ao pressionar Cancel, não acontece nada.

Ao pressionar OK, já vai para a função LinkButton_Click.

Já agora, o que estava lá antes de ter de alterar era:

< A class="topicoClaro1" href="#reftop" onclick="if (confirm('Deseja mesmo sair da aplicação?')) { top.close(); }">sair< /A>


Ou seja, tinha um link normal e a operação provocava o fecho da janela. Mas o "if (confirm" não estava a trabalhar muito bem.

Mais uma resolvida pelo tio google.

fontes:
Várias páginas, mas nenhuma me dizia que tinha de ter o evento tanto no PageLoad como no próprio objecto.
É só pesquisar por Attributes.Add.

Sem comentários: