sexta-feira, 7 de dezembro de 2007

Intellisense sempre a espreita

Um recurso interessante que podemos contar no desenvolvimento de aplicativos, seja Web ou Desktop, é o intellisense. Clique para ver maiorPra quem não conhece pelo nome, intellisense é aquele “menu” de classes, métodos propriedades e etc que aparece enquanto você digita o código. Muita gente não sabe, mas o intellisense não aparece apenas quando digitamos algo como Me ou this. Na verdade você pode acioná-lo teclando CTRL + tecla de espaço. Ele é útil também para que não se digite nomes errados e/ou de entidades que não pertençam ao atual escopo. Um exemplo disso pode ser visto a seguir: Clique para ver maiorClique para ver maiorNa primeira imagem tento procurar uma variável que foi definida dentro do escopo do laço foreach. Na segunda imagem crio a mesma antes do laço e posso utilizá-la. Podemos ver que o intellisense enxerga melhor que nós o escopo de visibilidade das entidades. Porém, nem tudo são flores. Lembre-se que alguns objetos podem conter referências a objetos diferentes em tempo de execução. Um exemplo disso é o sender dos eventos.  Clique para ver maior Clique para ver maiorNo modo de edição aparecem apenas os métodos básicos herdados de sua classe base. Mas em tempo de execução ele tem a referência do objeto que disparou o evento e pode conter as mesmas propriedades e métodos da mesma.

quarta-feira, 31 de outubro de 2007

Facilidades .NET

Visual Studio em tela cheia

Essa dica é pra quem gosta de usar mais de 100% da tela, he, he. Para deixar o Visual Studio em tela cheia com poucos toques basta fazer Shift+Alt+Enter.

Auto completar

Definiu o nome de uma variável que está complicado de digital igual? Programa em C# e nunca sabe como está o case da palavra? Seus problemas acabaram. Inicie a digitação da palavra e depois clique Control+Espaço. Isso fará com que o intellisense apareça na tela com as opções. Isso é bom também para saber se a variável pertence aquele escopo. Se não aparecer nas opções é porque não faz parte daquele escopo.

Definir primeiro foco de uma página

Se você tem uma tela e quer que ao carregar a página uma determinada caixa de texto ou botão receba o foco, basta fazer assim:

    <form id="form1" DefaultFocus="txtBusca" runat="server">

       ...

    </form>

Definir botão que responderá ao ENTER na página

Para escolher qual botão será acionado quando for clicado no ENTER do teclado, basta fazer o seguinte código:

    <form id="form1" DefaultButton="btnBuscar" runat="server">

       ...

    </form>

Essas e outras tantas dicas podem ser visualizadas e também inseridas diretamnte no site .NET Tip of The Day Falow

sábado, 8 de setembro de 2007

Formatação em GridView

    Hoje vou falar de um assunto que pode causar muita dor de cabeça para quem está começando a conhecer os controles do ASP.NET.     Vou falar um pouco sobre a formatação de valores em um controle GridView. Nem sempre o dado armazenado no banco representa o que usuários deseja enchergar. Um exemplo disso é o campo de status, onde geralmente é usada uma notação diferente do nome do mesmo, por exemplo, apenas uma letra.     Para iniciar, crie um novo WebSite com o nome de GridFormatado. Arraste um GridView para a tela, crie um banco de dados como mostrado na imagem e faça o vínculo do GridView com o banco através de um controle DataSource.     Execute o projeto e você verá uma tela semelhante a esta ao lado. O GridView mostra os dados da mesma forma em que estão gravadas no banco. Mas não parece muito intuitivo colocar para o usuário final um "A" ou "I" quando o usuário está, respectivamente Ativo ou Inativo.     Da mesma forma que você poderia informar com uma imagem ao invés da letra o sexo do usuário.     Vou ensinar duas formas de fazer isso, uma através de um código inserido diretamente na página .aspx e outro através da chamada de um método na classe derivada da página .aspx.     Acesse a tecla inteligente do GridView, vá até edit columns e clique em Convert this field into a ItemTemplate nos campos Sexo e Status.     Acesse o código do arquivo aspx e encontre o seguinte código dentro sendo atribuído a uma propriedade Text: '<%# Bind("Status") %>'     Neste trecho, pode ver onde o campo Status do Select executado pelo DataSource é preenchido. Esse código retornará apenas um "A" ou "I" conforme nosso banco de dados. Para que neste local aparece um texto mais intuitivo, devemos trocar pelo seguinte código: C# '<%#((string)Eval("Status"))== "A" ? "Ativo" : "Inativo" %>' VB.NET '<%# iif(Eval("Status") = "A" , "Ativo" , "Inativo") %>'     Podemos ver que temos um código simples onde é feito um teste condicional. É uma solução bem simples, nada de fazer novas funções nem nada. Mas nem sempre isso vem de encontro ao que realmente desejamos. Se quiser fazer algo mais complicado, não convém colocar diretamente no código aspx. É nesses casos que usamos as funções no CodeFile.     Acesse o código do arquivo aspx e encontre o seguinte código dentro sendo atribuído a uma propriedade Text: '<%# Bind("Sexo") %>'     Neste trecho, semelhante ao anterior, o campo "Sexo" recebe o seu valor. Esse código retornará apenas um "M" ou "F" conforme nosso banco de dados. Neste caso vamos fazer a troca deste texto via função no CodeFile. Primeiro altere o código no arquivo aspx conforme segue: C# ou VB.NET '<%# FormataSexo(Convert.ToString(Eval("Status"))) %>'     E no CodeFile crie a função com o mesmo nome, lembrando de que como se trata de um acesso a método de fora da classe é necessário declara-lo com modificador de acesso protected. protected string FormataSexo(string sexo)  {   if (sexo =="M")   {    return "Masculino"   }   else   {    return "Feminino"   }  }     As possibilidades vão mais além. Por exemplo, ao invés de ser um texto, uma imagem, então trocando o controle, de um Label para um html img. Isso facilita bastante em casos em que deve-se tratar imagens que não existem, colocando uma default de "imagem não disponível e etc.