Usuário com melhor resposta
Atualização de uma página sem dar postback

Pergunta
-
Boa Tarde,
Tenho uma aplicação de automação e preciso atualizar uma página minha de acordo com os dados que recebo do banco.
Quero apenas atualizar minha página sem dar o postback, ou sem apertar o F5, quero atualizar minha página sem mexer nela.
Assim como as páginas de e-mails, que atualizam sozinhas a cada email que chega.
Como posso fazer isso? Me ajudem, por favor...
Muito obrigado !
Até
Respostas
-
O UpdatePanel combinado com o controle Timer. O Timer não é do UpdatePanel, é um outro controle.
cara com jquery é um pouco mais complicado, apesar de ser simples (rsrs). Se sua intenção for só vizualização de dados (grid,detalhes), como é o caso dos emails, jquery é altamente eficiente. E creio que vc não precisa atualizar a pagina inteira.
Pra mais detalhes sobre jquery entra no site deles "www.jquery.com" e da uma olhada nos metodos e outras coisas bem interessantes. Hoje em dia, programador web não consegue mais viver sem uma biblioteca dessas.
Espero ter ajudado. Abraço!
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
-
sim,
é só vc colocar uma função ajax dentro da função Write. Segue um exemplo abaixo da função ajax do jquery:
$.ajax({
type: "GET",
url: 'MinhaPagina.aspx', // requisita a paginacache: false,
data: { id: 0 }, // Parametros do GET (QueryString)
success: function (data) {
$("#Id_da_minha_div").html(data); // aqui, a div que vc colocar receberá o html retornado
},
error: function (xhr, er, errorThrown) {
alert(xhr.responseText); // alerta o erro se ocorrer
}
});Nesse metodo vc pode colocar a pagina que for no "url" que ele trará. O parametro data serve para vc passar alguma QueryString se quiser. No "sucess" vc faz o que quer com o resultado. Nesse caso o retorno é puro HTML, então basta jogar o html resultante na sua div.
só lembrando que pra usar jquery vc deve fazer referencia ao .js do jquery.
Abraço!
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
-
hum, testa assim:
$(document).ready({
$.ajax({
type: "GET",
url: 'Default.aspx', // requisita a pagina
cache: false,
data: { id: 0 }, // Parametros do GET (QueryString)
success: function (data) {
$("#showimage").html(data); // aqui, a div que vc colocar receberá o html retornado
alert('deucerto');
},
error: function (xhr, er, errorThrown) {
alert(xhr.responseText); // alerta o erro se ocorrer
}
});});
a função acima "$(document).ready(function(){});" é executada quando todo o documento é inicializado. Testa assim e veja se a função ajax requisita sua pagina. Outra coisa, como vc esta trabalhando com script fica dificl vc saber os erros que acontecem e pq nao esta dando certo sem uma ferramenta de auxilio. Baixa o "FireBug" do Moziila pra vc testar quando tiver utilizando script. Ele vai te ajudar MUITO.
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
-
ok,
então faz assim:
no aspx:
<div runat="server" id="teste">
é so colocar o atributo runat = server. Pra vc poder manipular no servidor.
depois no .cs
teste.Attributes["style"] = "background-color:Red;width:200px;height:200px;";
Abraço!
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
Todas as Respostas
-
-
vc pode fazer isso utilizando Ajax e UpdatePanel. Ja viu sobre isso?? Se o problema for dar refresh na pagina de tempos em tempos o UpdatePanel com um controle Timer pode resolver seu problema
O UpdatePanel da um PostBack, porem camulflado. A tela não piscará dando aquela sensação de lentidão. Ele só ajuda na experiência do usuário. Se é o que vc ta atras, essa é uma boa opção.
Espero ter ajudado. Abraço!
-
-
O UpdatePanel combinado com o controle Timer. O Timer não é do UpdatePanel, é um outro controle.
cara com jquery é um pouco mais complicado, apesar de ser simples (rsrs). Se sua intenção for só vizualização de dados (grid,detalhes), como é o caso dos emails, jquery é altamente eficiente. E creio que vc não precisa atualizar a pagina inteira.
Pra mais detalhes sobre jquery entra no site deles "www.jquery.com" e da uma olhada nos metodos e outras coisas bem interessantes. Hoje em dia, programador web não consegue mais viver sem uma biblioteca dessas.
Espero ter ajudado. Abraço!
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
-
-
-
Eu estou fazendo assim:
<script type="text/javascript"> function Load() { setTimeout( "refresh()", 1000); } function refresh() { window.location.href = window.location; } </script>
Está funcionando, atualiza sozinho, porém, está dando aquelas piscadas na tela, não quero isso.Tem como tirar?
Obrigado !
-
Cara, vc deve explicar melhor o que deseja atualizar. Se voce deseja atualizar somente porção da pagina aconselho Ajax, que é bem mais rapido e evita o pisca. Se o refresh tem de ser na pagina toda mesmo, tipo como o site da Globo faz, desse jeito nao ta ruim. Se pagina apresentar mt conteudo e mt imagem aconselho fazer dessa forma mesmo.
-
Achei isso nos fóruns, a sintaxe está correta?
var tempo_seg = 1 // Tempo em segundos var tempo_ms = tempo_seg * 1000 // Tempo em milésimos de segundo function Atualiza() { goAjax("Default.aspx") setTimeout("Atualiza()", tempo_ms) } function goAjax(url) { xmlhttp = new XMLHttpRequest() xmlhttp.open("GET", url, true) xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState==4) { retorno = xmlhttp.responseText divisao = document.getElementById("showimage") divisao.innerHTML = retorno } } xmlhttp.send(null) }
-
-
-
Olá amigo,
Veja se isso te ajuda!
Updatepanel - http://www.macoratti.net/07/07/ajax_upp.htm
Abraços,
Daniel Afonso
-
Eu consegui !
Fiz da seguinte forma amigos:
window.onload = function() { window.setInterval( write, 2000 ); } var i = 1; function write() { document.getElementById('showimage').innerHTML += 'Oi! '+i+'<br />'; i++; }
Essa function Write era só pra ver se funciona, e funciona mesmo, ficou perfeito, a cada 2 segundos ele escreve na página.
Agora teria como eu usar esse função atrelada com o banco de dados? Pois precisarei pegar alguns dados do banco e jogar na tela, assim que eles forem atualizados...
-
sim,
é só vc colocar uma função ajax dentro da função Write. Segue um exemplo abaixo da função ajax do jquery:
$.ajax({
type: "GET",
url: 'MinhaPagina.aspx', // requisita a paginacache: false,
data: { id: 0 }, // Parametros do GET (QueryString)
success: function (data) {
$("#Id_da_minha_div").html(data); // aqui, a div que vc colocar receberá o html retornado
},
error: function (xhr, er, errorThrown) {
alert(xhr.responseText); // alerta o erro se ocorrer
}
});Nesse metodo vc pode colocar a pagina que for no "url" que ele trará. O parametro data serve para vc passar alguma QueryString se quiser. No "sucess" vc faz o que quer com o resultado. Nesse caso o retorno é puro HTML, então basta jogar o html resultante na sua div.
só lembrando que pra usar jquery vc deve fazer referencia ao .js do jquery.
Abraço!
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
-
-
-
-
Eu joguei assim:
ps: Está comentado !<script type="text/javascript"> window.onload = function() { window.setInterval( write, 1000 ); } var i = 1; function write() { document.getElementById('showimage').innerHTML += 'Oi! '+i+'<br />'; i++; // $.ajax({ // type: "GET", // url: 'Default.aspx', // requisita a pagina // cache: false, // data: { id: 0 }, // Parametros do GET (QueryString) // success: function (data) { // $("#showimage").html(data); // aqui, a div que vc colocar receberá o html retornado // }, // error: function (xhr, er, errorThrown) { // alert(xhr.responseText); // alerta o erro se ocorrer // } // }); } </script><br/>
-
-
-
hum, testa assim:
$(document).ready({
$.ajax({
type: "GET",
url: 'Default.aspx', // requisita a pagina
cache: false,
data: { id: 0 }, // Parametros do GET (QueryString)
success: function (data) {
$("#showimage").html(data); // aqui, a div que vc colocar receberá o html retornado
alert('deucerto');
},
error: function (xhr, er, errorThrown) {
alert(xhr.responseText); // alerta o erro se ocorrer
}
});});
a função acima "$(document).ready(function(){});" é executada quando todo o documento é inicializado. Testa assim e veja se a função ajax requisita sua pagina. Outra coisa, como vc esta trabalhando com script fica dificl vc saber os erros que acontecem e pq nao esta dando certo sem uma ferramenta de auxilio. Baixa o "FireBug" do Moziila pra vc testar quando tiver utilizando script. Ele vai te ajudar MUITO.
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34
-
-
-
Fiz sim, mas já resolvi o problema utilizando UpdatePanel com a propriedade Timer.
Porém, agora estou com outro problema, vejam se podem me ajudar, pelo que parece é muito simples:
<asp:Timer runat="server" ID="Timer" Interval="1000" OnTick="Atualizar"> </asp:Timer>
public void Atualizar(object sender, EventArgs e) { lblPuffer.BackColor = System.Drawing.ColorTranslator.FromHtml("Red"); }
Tenho esse método Atualizar, dentro do meu Timer.
Quero que a minha label troque o BackColor a cada atualizada, a cada segundo.
Como posso fazer isso?
Dessa forma que estou fazendo, ela troca de cor após 1 segundo e já era, não troca mais.
Como posso fazer pra cor ficar trocando a cada atualizada?
Obrigado !
-
-
-
-
-
ok,
então faz assim:
no aspx:
<div runat="server" id="teste">
é so colocar o atributo runat = server. Pra vc poder manipular no servidor.
depois no .cs
teste.Attributes["style"] = "background-color:Red;width:200px;height:200px;";
Abraço!
- Marcado como Resposta Eder CostaModerator terça-feira, 13 de dezembro de 2011 13:34