Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Formatando valores com a interface IFormattable

Neste artigo veremos como gerar um classe e como utilizar a interface IFormattable para formatar um campo.

 

Depois de um tempo um tanto afastado, estou de volta com meus artigos em .Net. Para começar, vamos tratar de um assunto interessante presente em nossas aplicações: Formatação de Campos. Podemos afirmar que em praticamente todo aplicativo existe uma rotina para formatar um determinado campo, a citar: números, datas, telefones, cpf, cnpj, etc. No .NET Framework existe uma interface chamada IFormattable que possui um método chamado, ToString que é invocado automaticamente pelo runtime quando especificamos uma formatação.

 

Neste artigo veremos como gerar um classe e como utilizar a interface IFormattable para formatar um campo.  Inicie o Visual Studio.Net e crie um Novo Web Site ( File -> New Web Site ). Logo após adicione um novo item do tipo Class ( Add New Item -> Class) e dê o nome de ClassesFormatacao. O Visual Studio.Net criará automaticamente um diretório chamado App_Code, onte estará armazenado o arquivo ClassesFormatacao.Vb .

 

rmfvciforfig01.jpg 

Figura 1 – Diretório App_Code

 

Após ter criado o arquivo ClassesFormatacao, é hora de escrever as. Nesse exemplo, escreverei duas classes:

·         Telefone;

·         CNPJ.

 

Veja na lista abaixo a implementação da Classes Telefone e CNPJ.

 

Public Class Cnpj

    Implements IFormattable

 

    Private _numero As String

 

    Public Sub New(ByVal numero As String)

        Me._numero = numero

    End Sub

 

    Public Overloads Function ToString(ByVal format As String, _

    ByVal formatProvider As IFormatProvider) As String _

        Implements IFormattable.ToString

 

        'Para pessoa jurídica - CNPJ

        If format = "PJ" Then

            Return Convert.ToDouble(Me._numero).ToString("000\.000\.000\/0000\-00")

            'Para pessoa física: CPF

        ElseIf format = "PF" Then

            Return Convert.ToDouble(Me._numero).ToString("000\.000\.000\-00")

        End If

        Return Me._numero

    End Function

 

    Public Overrides Function ToString() As String

        Return Me.ToString(Nothing, Nothing)

    End Function

End Class

Listagem 1 – Classe CNPJ

 

Public Class Telefone

    Implements IFormattable

 

    Private _numero As String

 

    Public Sub New(ByVal numero As String)

        Me._numero = numero

    End Sub

 

    Public Overloads Function ToString(ByVal format As String, _

    ByVal formatProvider As IFormatProvider) As String _

        Implements IFormattable.ToString

 

        If format = "TE" Then

            Return Convert.ToDouble(Me._numero).ToString("0000\-0000")

 

        End If

 

 

        Return Me._numero

    End Function

 

    Public Overrides Function ToString() As String

        Return Me.ToString(Nothing, Nothing)

    End Function

End Class

Listagem 2 – Classe Telefone

        

Na implementação das Classes CNPJ e Telefone, existe a implementação da interface IFormattable e, dentro do método sobrecarregado (Overloads) ToString, é retornado a formação. Baseando-se neste formato é que uma determinada formatação é aplicada ao objeto. Se nenhuma formatação é especificada, somente o objeto é retornado, sem nenhuma espécie de formatação.

 

Para testar as classes criadas, vamos ao arquivo Default.aspx e escreveremos os seguintes códigos no evento LOAD da página.

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

 

        Dim cpf As New Cnpj("00100200345")

        Dim telefone As New Telefone("36337500")

 

        Response.Write("Telefone Original: " & telefone.ToString & "<br />")

        Response.Write(String.Format("Telefone Formatado: {0:TE}. ", telefone) & "<br/>")

 

        Response.Write("CPF Original: " & cpf.ToString & "<br />")

        Response.Write(String.Format("CPF Formatado: {0:PF}", cpf))

 

    End Sub

Listagem 3 – Formatando os objetos

 

Agora é hora de testar a aplicação, para isso execute a página e o seguinte resultado aparecerá no seu navegador.

 

rmfvciforfig02.jpg 

Figura 2 – Testanto a Aplicação

 

Esse tipo de formatação é bastante flexível poderá ser usada em controle DataBound, como GridView (Figura 3) e o DropDownList (Figura 4)

 

rmfvciforfig03.jpg 

Figura 3 – GridView

 

rmfvciforfig04.jpg

Figura 4 – DropDownList

        

Veja na Figura 5 baixo, o DropDownLista com valores formatados:

 

rmfvciforfig05.jpg 

Figura 5 – DropDownList formatado

        

Chegamos ao fim.

 

Até o próximo!





    4 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Paulo Cezar De Almeida
Pra ser perfeito, o assunto merece ser apresentado em uma vídeo-aula. Excelente artigo, parabéns!


em 28/10/2007 04:38 - Responder

 

  Regilan
Olá Paulo. Muito obrigado pelo FeedBack. Em breve estarei tendo a oportunidade de publicar video-aulas no portal... Quem sabe não tenho a oportunidade de publicar uma vídeo aula desse assunto. Agradeço a sugestão!!


em 21/11/2007 21:15 - Responder
 

Rech
Boa tarde, legal esta explicação de formatar valores utilizando a interface IFormattable, mas eu estou com o seguinte problema: =>tenho um numero de 44 digitos; e quero fazer uma formatação para este; ex: ##.####.##.###.###/####-##-##-###-###.###.###-###.###.###-#


em 27/11/2007 18:04 - Responder

 

Leonardo Bastos De Paula
Muito bom o artigo, testei como indicado na página Default e deu certo, mas não conseguir implementar em uma coluna do GridView, poderia explicar melhor ou dar um exemplo?


em 9/12/2008 16:06 - Responder

 



[Este post ainda não foi associado a uma sequência]
Autor
Regilan Meira Silva

Regilan Meira Silva (regilan@gmail.com), é Bacharel em Ciência da Computação pela Universidade Estadual de Santa Cruz(UESC) em Ilhéus, Bahia e Especialista em Administração de Sistemas da Informação pela Universidade Federal de Lavras em Lavras, Minas Gerais. Trabalha com desenvolvimento de sistemas...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
3   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da .net Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03