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 .
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
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.
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.
Esse tipo de formatação é bastante flexível poderá ser usada em controle DataBound, como GridView (Figura 3) e o DropDownList (Figura 4)
Veja na Figura 5 baixo, o DropDownLista com valores formatados: