Mostrando postagens com marcador trecho de código. Mostrar todas as postagens
Mostrando postagens com marcador trecho de código. 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.

terça-feira, 7 de agosto de 2007

Tabeless e mais o que?

    Sempre na correria mas sempre aprendendo um pouco mais. Estou pesquisando um pouco mais a fundo sobre Tableless, CSS e CSS Hack, palavras que cada vez mais são usadas no mundo da Internet.     Infelizmente, apesar de existir um padrão para isso tudo, organizado pelo W3C, muitos browser apresentam as mesmas aplicações web (sites) de formas diferentes.     Um bom exemplo disso e a forma com o Internet Explorer não ignorar atributos precedidos por um "_" no CSS. Em muitos casos, esse CSS Hack é a saída quando você precisa definir, por exemplo, um with diferente no IE , diferente dos outros browsers. basta definir assim: width:200px; _width:250px;     Todos os outros browser vão ignorar a segunda atribuição, mas o IE não, ele sobrescreverá o que foi atribuído anteriormente. O Problema é que com esse CSS Hack seu site não é validado pelo W3C.     Uma forma legal de ver se o CSS que você fez está sem redundâncias ou erros é acessar o site de validação do WC3. Você copia o link do site ou até mesmo cola o código fonte e analisa o que pode ter de errado com seu CSS. Claro que isso não garante que funcione em todos os Browsers, mas pelo menos saberá que está no padrão recomendado. Falow

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