Existe um controle UpdatePanel no atlas, que suporta atualizações parciais. Basta especificar Mode="Conditional". Claro, o ScriptManager também deve definir EnablePartialRendering="true".
Atualização parcial, usando xmlHttp. O processo é o seguinte:
1: Durante o postback, o js da página faz postback dos dados da página (a página inteira deve ser postback)
2: O background recebe a solicitação e inicia o processamento (o pageLoad da página pode ser acionado)
3: Após o processamento, envie apenas os dados a serem atualizados de volta para a página (determine qual parte dos dados enviar de volta de acordo com o nome do UpdatePanel que você deseja atualizar. Este é o código de this.updatePanelXX.Update() )
4: A página (cliente) atualiza apenas esta parte dos dados de postback (esta é a chamada atualização parcial, o método é encontrar o updatePanle e, em seguida, UpdatePanel.InnerHtml = PostBackData. É uma substituição direta.)
A partir disso ponto de vista, a chamada atualização parcial A nova é redesenhar apenas a parte especificada do updatePanel (ao postar de volta no servidor, a página inteira deve ser postada de volta; o código de segundo plano processará cada uma como antes; mas apenas parte dos resultados do processamento serão devolvidos ao cliente).
Dessa forma, será muito difícil se você quiser acionar o processamento js de uma página enquanto o UpdatePanle estiver processando. Como todos os dados que você publica são atualizados em um pequeno canto, o Response.Write(js) anterior não funcionará.
A solução é esta:
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenOverViewPart", openScript); Use o método RegisterStartupScript para registrar a função js e então ela pode ser executada sem problemas.
Na verdade, a execução não é tão suave, porque depois que o atlas executa a atualização parcial, ele colocará todos os js na página juntos --- cuide da sua vida --- então causará um pequeno impacto: muitos js têm como <! - e outros símbolos de comentário, se você não tomar cuidado, seu próprio js também será comentado. Isso é realmente mais problemático.
A solução é X. Você mesmo precisa controlar o estilo de saída js e adicionar mais alguns retornos de carro para mostrar que não é um comentário.
string openScript = "nt";
openScript = "<script" + " type='text/javascript'>rn"
+ "rn"
+ "var a=0;rn"
+ "opener.top.__doPostBack('" + Request.Params["refresh"] + "','refresh');rn"
+ "window.opener.focus();"
+ "janela.fechar();"
+ "<" + "/script" + ">";