none
Formatação em determinado campo no gridview RRS feed

  • 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?
    quinta-feira, 11 de abril de 2013 00:31

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
    sexta-feira, 12 de abril de 2013 18:51

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

    Abraços

    quinta-feira, 11 de abril de 2013 17:05
  • Não deu certo, tentei pegar a formatação do maskedtextbox mas não funcionou
    sexta-feira, 12 de abril de 2013 01:44
  • O seu campo de telefone é texto ou numérico? Você fez uma máscara do tipo {0: (##) ####-####}?

    sexta-feira, 12 de abril de 2013 13:02
  • O campo é string, e já utilizei essas formatações:

    {0: (##) ####-####}

    {0: (00) 0000-0000}

    {0: (99) 9999-9999}

    sexta-feira, 12 de abril de 2013 17:36
  • 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
    sexta-feira, 12 de abril de 2013 18:51