O NeoMatrix Tech está de casa nova!

Você deverá ser redirecionado em 6 segundos. Se não, visite:
http://www.leonelfraga.com/neomatrixtech
e atualize seus favoritos.

Aviso IMPORTANTÍSSIMO!

Aviso aos navegantes:

O NeoMatrix Tech mudou de casa!!!

A partir de agora, acessem pelo novo endereço:

http://www.leonelfraga.com/neomatrixtech

Ué... mas é só o domínio mudou de lugar?

R: Na verdade, não é bem assim hehe. Este domínio que você acessa agora aponta para um blog hospedado no Blogger, enquanto no novo, aponta para um blog na plataforma Wordpress, hospedagem própria, muito mais rápida e com um layout mais agradável de ler ;)

Não vou fechar este domínio igual ao que eu fiz com o NM Light (que já está 100% na nova plataforma). Talvez beeeeeeem depois eu faça isso.

Todos os posts daqui se encontram lá, e novos posts serão colocados somente no novo endereço.
A única coisa que não consegui importar foram os comentários. Mas em breve vai ter um post contando sobre a epopéia que foi migrar o NeoMatrix Tech!

Somente vou fechar a área de comentários daqui. Caso queiram comentar, favor ver o post correspondente no "Novo NeoMatrix Tech" e comentem por lá. É bem melhor! (pena que os permalinks "amigáveis para SEO" não funcionam lá, dá erro 404 e não consigo fazer a configuração funcionar. E olha que eu já vi vários artigos falando desse assunto :( ).

Quem assina o feed, já está lendo o conteúdo do novo NeoMatrix Tech!

quarta-feira, 10 de junho de 2009

Momento POG: Submetendo Textboxes Readonly alterados via JavaScript

Em vários momentos precisamos inibir a edição de algumas caixas de texto pelo usuário, seja que ela sirva somente para apresentação de um valor que vem diretamente da base de dados ou que apresente o resultado de uma pesquisa iniciada em outra página.

Para que o segundo motivo seja possível de ser feito, é necessário que uma rotina JavaScript altere o valor desta caixa de texto. Imagine o seguinte cenário:

- Página principal tem um campo onde se precisa informar dados de um veículo previamente cadastrado no sistema, sendo este campo bloqueado para edição manual e há um botão de pesquisa que abre uma janela pop up.

- Página pop up onde é feita uma pesquisa por um registro; clicando-se neste registro o campo da janela principal é alterado.

Se tratando de código, é algo mais ou menos assim:

Página Principal:

   1: <asp:TextBox runat="server" id="tbxDadosVeiculo" ReadOnly="True"></asp:TextBox>

Página Pop Up, aberta pela página Principal:

   1: protected void SelecionaRegistro_Click(object sender, EventArgs e)
   2: {
   3:     string script = "window.opener.getElementById(\"tbxDadosVeiculo\").value = " + "'" + getDadosVeiculo(...) + "'";
   4:     ClientScript.RegisterStartupScript(this.GetType(),"populaprincipal",script);
   5: }

O código do pop up é simples. Ele apenas registra uma rotina JavaScript, fazendo com que um textbox da página principal seja alterado.

Porém, ao submeter o formulário da página principal, o valor colocado pelo JavaScript na janela pop up ou outro script da mesma página no textbox é perdido.

Isto acontece por causa de uma política de segurança do .NET Framework 2.0, em que valores de componentes de interface com o atributo somente leitura no servidor não sejam postados, perdendo-se nesta operação.

Mas, graças também ao JavaScript e a POG a seguir podemos fazer com que a caixa de texto fique somente-leitura, porém poste seu conteúdo para o servidor. Siga os passos:

  1. Deixe o atributo ReadOnly da tag de servidor em False.
  2. Registre o atributo readOnly na tag HTML do cliente, com o seguinte código no evento PageLoad do formulário web:
   1: tbxDadosVeiculo.Attributes.Add("readOnly","true");

onde tbxDadosVeiculo é o textbox que será alterado via JavaScript.

Isto fará com que o servidor não tome conhecimento de que esta caixa de texto é somente leitura, dê um “bypass” na política de segurança e o conteúdo do textbox permaneça após os postbacks.

Um abraço!

0 comentários:


Postar um comentário

Para tornar este artigo ainda mais interessante, escreva suas críticas (desde que construtivas e sem ofenças), elogios, sugestões, complementos, dúvidas, etc, etc, etc!!!

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008 - Editado e configurado por Leonel F.

Voltar ao TOPO