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 .

Diretório App_Code
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.

Listagem 1 – Classe 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 2 – Classe Telefone

            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

        

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.

Listagem 3 – Formatando os objetos

            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

        

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

Testanto a Aplicação
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)

GridView
Figura 3 – GridView
DropDownList
Figura 4 – DropDownList

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

DropDownList formatado
Figura 5 – DropDownList formatado