TDC 2013

quarta-feira, 30 de setembro de 2009

Habilitar campo texto com JavaScript e C#

Devem estar se perguntando qual a necessidade disso se pode ser feito direto pelo código sem a intervenção via javascript (js).
Realmente, em um caso normal não tem a necessidade de usar o js para esse tipo de alteração de atributo. Mas vamos imaginar o seguinte caso:

Você tem uma página principal (WebForm) onde existe o campo cidade em um componente textbox, no qual o valor será passado por um popup que trará uma pesquisa onde será selecionado a cidade e na sequência ao fechar esse popup estará no campo mencionado o valor da cidade.
Até esse ponto, está tudo normal ao selecionar o registro no popup você estará chamando um bloco parecido com esse:

String sString = "";
sString = "window.opener.document.forms(0).txtCidade.value = '" + cidade + "';";
sString += "window.opener.document.forms(0).submit();";
sString += "self.close();";
ClientScript.RegisterClientScriptBlock(this.GetType(), "OK", sString, true);


A coisa começa a complicar quando o campo cidade "deve" esta em readOnly. Nesse caso o trecho acima não faz o menor efeito.
Teoricamente podemos incluir no trecho o pedido para deixar o textbox sem readOnly e após incluir o campo voltando para tal:

String sString = "";
sString = "
window.opener.document.forms(0).txtCidade.readonly = false;";
sString += "window.opener.document.forms(0).txtCidade.value = '" + cidade + "';";
sString += "window.opener.document.forms(0).txtCidade.readonly = true;";
sString += "window.opener.document.forms(0).submit();";
sString += "self.close();";
ClientScript.RegisterClientScriptBlock(this.GetType(), "OK", sString, true);


Mesmo desse jeito citado acima não funcionaria, pois em cima da especificação de segurança usada pela framework da microsoft (2.0 em diante) uma vez o campo definido na tag como readOnly não é possível a sua edição.

Mas existe uma maneira de driblar essa segurança. Vale informar que isso não é recomendado pela Microsoft, pois justamente se existe esse bloqueio e para evitar uma brecha de segurança. Mas mesmo ciente dos risco, quiser utilizar, siga os seguintes passos:

  1. Deixe o componente textbox com a opção readonly como false.
  2. No Page_Load inclua o seguinte atributo "txtCidade.Attributes.Add("readOnly", "true");" (sem as aspas)
  3. Utilize o segundo trecho de código informado acima.
Dessa forma estará inserindo o valor no campo e deixando ele novamente como readOnly.

quinta-feira, 24 de setembro de 2009

Palestras on-line

Ontem assisti as palestras II Fórum de Java organizado pela SERPRO (http://www.softwarelivre.serpro.gov.br/saopaulo).
Na grande tinha palestras muito interessantes, mas o que me chamou atenção foi poder ter participado da palestra sem estar nela!

Realmente gostaria de ter ido, mas como já tinha pedido dispensa no trabalho para participar no JustJava, não tinha condições de faltar mais dias.

Dessa forma assisti as palestras de ontem directo da minha mesa de trabalho. Uma forma muito útil para muitos profissionais, principalmente os consultores que ficam alocados. Nesse caso a falta saí directo do bolso.

Acredito que os organizadores, deveriam pensar em eventos que contam com palestras, usar desse artificio de transmição ao vivo pela Internet e cobrar um valor diferenciado para quem quiser participar do evento por essa modalidade.

Aumentaria o numero de participantes, principalmente aqueles profissionais que moram em outro município ou mesmo estado, pois muitas vezes não participam por causa do custo elevado (ingresso, transporte, hospedagem e dia de trabalho).

Em plena era da internet colaborativa e vídeos on-line (YouTube). Essa modalidade deveria ser mais explorada na nossa área.