Usuário com melhor resposta
Formatação em determinado campo no gridview

Pergunta
-
Tenho um campo chamado telefone, quando preencho ele no cadastro uso o jquery para formatar, mas preciso que ele seja salvo no banco sem os caracteres, até aqui tudo bem, mas quando mostro ele no gridview preciso formatá-lo para melhor visualização, como posso fazer isso?
Respostas
-
Neste caso, como o campo é string, acredito que não será possível a formatação.
Já que não são armazenados os caracteres especiais, teria algum outro motivo para este campo não ser numérico (int/bigint)?
Por questões de espaço de armazenamento e indexação no bando seria melhor.
Caso tenha algum motivo para manter string, você poderia tratar essa formatação via Code Behind, no evento onRowDataBound:
http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx
De qualquer forma, você converteria o valor para numérico e aplicaria o .ToString com a formatação da máscara, exemplo:
protected void gridTeste_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[0].Text = Convert.ToInt64(e.Row.Cells[0].Text).ToString("(##) ####-####"); } }
Obs: trocar o indice 0, pelo indice da coluna a ser formatada.
- Editado Diego Cotini sexta-feira, 12 de abril de 2013 18:52
- Marcado como Resposta Thiago_Porto sexta-feira, 12 de abril de 2013 19:06
Todas as Respostas
-
Olá Thiago,
Se a máscara de formatação do seu telefone for fixa, você pode utilizar a propriedade DataFormatString.
Na thread abaixo, foi utilizada a propriedade para formatar um campo data. O princípio é o mesmo, basta aplicar a máscara correspondente.
http://social.msdn.microsoft.com/forums/pt-BR/aspnetpt/thread/9f1523a8-ea29-4444-b2f5-178958305bb1
-
-
-
-
Neste caso, como o campo é string, acredito que não será possível a formatação.
Já que não são armazenados os caracteres especiais, teria algum outro motivo para este campo não ser numérico (int/bigint)?
Por questões de espaço de armazenamento e indexação no bando seria melhor.
Caso tenha algum motivo para manter string, você poderia tratar essa formatação via Code Behind, no evento onRowDataBound:
http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx
De qualquer forma, você converteria o valor para numérico e aplicaria o .ToString com a formatação da máscara, exemplo:
protected void gridTeste_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[0].Text = Convert.ToInt64(e.Row.Cells[0].Text).ToString("(##) ####-####"); } }
Obs: trocar o indice 0, pelo indice da coluna a ser formatada.
- Editado Diego Cotini sexta-feira, 12 de abril de 2013 18:52
- Marcado como Resposta Thiago_Porto sexta-feira, 12 de abril de 2013 19:06