Durante o desenvolvimento de muitos sistemas web nos deparamos com as seguintes situa????es:
- P??gina dar refresh automaticamente a cada x segundos;
- Executar um bloco de script (JavaScript) a cada x segundos;
- Executar um bloco de c??digo (ASP.NET) a cada x segundos sem refresh na p??gina.
Creio que s??o essas as principais situa????es que s??o mais comumentes buscadas afim de atingir o objetivo de atualiza????o autom??tica. Pois bem, nesse artigo irei demonstrar como solucion??-las de maneira r??pida e eficaz.
Situa????o 1: Atualizar p??gina automacatimente
Para essa situa????o, que ?? a mais simples, basta inserir a seguinte tag no head da p??gina especificando a quantidade de segundos que deve aguardar para dar o refresh:
Situa????o 2: Executar uma fun????o JavaScript a cada x segundos
Se derem uma olhada no post anterior do chat, ver??o que uso uma fun????o chamada setTimeout() que ir?? registrar qual fun????o ir?? executar e qual o tempo de espera. Ent??o, coloque o seguinte c??digo JS:
window.onload = function() {
setTimeout(“FuncaoJS()”, 10000);
}
function FuncaoJS(){
// Instru????es
setTimeout(“FuncaoJS()”, 10000);
}
De forma similar, pode-se usar tamb??m a fun????o setInterval().
Situa????o 3: Executar um m??todo ASP.NET a cada x segundos sem dar refresh
J?? para o ASP.NET podemos usar o AJAX. Para isso utilizaremos um Timer e um UpdatePanel. Na p??gina, adicione o ScriptManager e insira o Timer dentro do ContentTemplate do UpdatePanel. Atribua um m??todo no evento OnTick do Timer ficando da seguinte forma:
<Ajax:ScriptManager ID=“ScriptManagerAjax” runat=“server”>
</Ajax:ScriptManager>
<Ajax:UpdatePanel ID=“Painel” runat=“server”>
<ContentTemplate>
<Ajax:Timer ID=“Temporizador” runat=“server” Interval=“10000” OnTick=“ExecutaScript_Tick”>
</Ajax:Timer>
</ContentTemplate>
</Ajax:UpdatePanel>
Se voc?? deixar o Timer fora do UpdatePanel ele ir?? realizar a execu????o do bloco de script, mas ir?? dar PostBack e, consequentemente, refresh na p??gina. Por isso, e mais amig??vel, deve-se deixar dentro.
Agora basta criar o m??todo no Code-Behind contendo o c??digo a ser executado:
protected void ExecutaScript_Tick(object sender, EventArgs e)
{
}
Tranquilo, n???
Uma resposta em “Refresh autom??tico ou execu????o de script em ciclos”
Obrigado champs!