Quando iniciamos o desenvolvimento do GAS WEB umas das tecnologias que estavam em foco era o AJAX, bem vou tentar explicar aqui como isso funciona.
AJAX significa (Assyncronous JavaScript AND XML).Bom isso não diz muita coisa né??
A introdução do ajax na WEB foi possível graças a um protocolo chamado XMLHTTPREQUEST que os browsers passaram a suportar em versões mais recentes,
isso nos permite "trocar" informações de pedaços da página HTML que esta sendo apresentada para o usuário. Esta técnica melhora muita experiência do usuário , pois não existe mais a "RECARGA" da página inteira, apenas o necessário é alterado e recarregado para o usuário.
Talvez você esteja se perguntando , como isso é feito por traz dos panos?
O que fazemos na prática é o seguinte , toda vez que existe uma requisição ao servidor , e desejamos que ela seja feita de forma asyncrona nós mandamos a requisição através do xmlHttpRequest e aguardamos o status de concluido, após isso basta atualizar o conteúdo alterado na página.
Bem é claro que isso vai muito código por traz, mas como você vai usar o GAS nem vai se preocupar com isso
Nós criamos um controle(framework de ajax) ele ja faz todo trabalho pra gente.
olhe no código abaixo o panel de ajax do GAS
veja como fica no código:
declaração do cotrole:
<%@ Register Assembly="gAjax" Namespace="g.WebComponents" TagPrefix="gAjax" %>
código do panel:
<gAjax:gAjaxPanel ID="GAjaxPanel1" runat="server" Height="453px" Width="528px">
<table class="Record" cellspacing="0" cellpadding="0">
<asp:PlaceHolder ID="Produtos_em_estoqueError" Visible="False" EnableViewState="false" runat="server">
<tr class="Error">
<td colspan="2">
<asp:Label ID="Produtos_em_estoqueErrorLabel" EnableViewState="false" runat="server" />
</td>
</tr>
</asp:PlaceHolder>
<tr class="Controls">
<th style="width: 162px; height: 24px;">
C¢digo
</th>
<td style="height: 24px">
<asp:TextBox CssClass="GasTextBorderInvisible" EnableViewState="false" onkeydown="Default.onTextChanged(event, vgWin);"
ID="Produtos_em_estoquetxtCodigo" MaxLength="8" Columns="8" runat="server" />
</td>
</tr>