Mostrando postagens com marcador server control. Mostrar todas as postagens
Mostrando postagens com marcador server control. Mostrar todas as postagens

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.

sexta-feira, 6 de julho de 2007

Transformar HTML em ASP.NET

    Um lance legal em ASP.NET é a possibilidade de transformar tags simples HTML em server controls. Já vou explicar.     Imagine que você tem a seguinte TABLE: <table border="1" bordercolor="black">     <tr> <td>1</td><td>2</td> </tr> <tr> <td>3</td><td>4</td> </tr> </table>
12
34
    Se você quisesse esconder uma das células ao clique de um botão, bastaria transformar a célula específica em um server control. Como? Bom, é simples. <table border="1" bordercolor="black"> <tr> <td>1</td><td runat="server" id="tdEsconde">2</td> </tr> <tr> <td>3</td><td>4</td> </tr> </table>     Basta colocar dentro da tag html runat="server" e escolhe um ID para chamar o controle, exatamente como os controles padrões do ASP.NET. Assim, basta usa-lo como você usaria um Label, por exemplo. Coloque no evento de um botão, ou qualquer outro evento o seguinte: tdEsconde.Visible = False     Parece loucura mas o ASP.NET entende que você está se referindo aquele determinado controle, mesmo ele sendo parte de uma table. A tabela aparecerá assim:
1
34
    E isso não se restringe apenas a table. Imagine mudar um link. É simples: <a runat="server" id="lnkBlog">     E no código coloque: lnkBlog.Href = "vitor.canova.blogspot.com"     Isso pode facilitar, principalmente quando você tem algo pronto e precisa alterar. Ao invés de ter que trocar tudo por controles ASP.NET padrão, bastar fazer a tag rodar direto no servidor como um Server Control. E as possibilidades vão bem além disso. Use a sua imaginação. Falow