none
Validando valores numéricos com data grid RRS feed

  • Pergunta

  • como validar os valores numéricos no "cells" de uma coluna?

      DataTable dt = new DataTable();
                    dt.Columns.Add("Codigo", typeof(string));
                    dt.Columns.Add("Descricao", typeof(string));
                    dt.Columns.Add("ValorVenda", typeof(string));
                    dt.Columns.Add("ValorPromocao", typeof(string));

                    while (Banco.Leitor.Read())
                    {
                        DataRow dr = dt.NewRow();
                        dr["Codigo"] = Banco.Leitor["id_servico"].ToString();
                        dr["Descricao"] = Banco.Leitor["descricao"].ToString();
                        dr["ValorVenda"] = Banco.Leitor["valor_venda"].ToString();
                        dr["ValorPromocao"] = Banco.Leitor["valor_venda"].ToString();
                        dt.Rows.Add(dr);
                    }

                    dataGridView1.DataSource = dt;

                    dataGridView1.Columns["Codigo"].Width = 48;
                    dataGridView1.Columns["Descricao"].Width = 380;
                    dataGridView1.Columns["ValorVenda"].Width = 120;
                    dataGridView1.Columns["ValorPromocao"].Width = 120;

                    dataGridView1.Columns["ValorVenda"].DefaultCellStyle.Format = "C";
                    dataGridView1.Columns["ValorPromocao"].DefaultCellStyle.Format = "C";

                 
    • Editado Wesley_Costa terça-feira, 16 de fevereiro de 2016 17:49 escrita errada
    terça-feira, 16 de fevereiro de 2016 17:48

Respostas

  • Você têm um campo numérico, mas converte ele para string, esse é o problema. A formatação que você passa no DefaultCellStyle.Format = "C"; está OK, basta fazer o Cast. Ex:
    dr["ValorVenda"] =  double.Parse(Banco.Leitor["valor_venda"].ToString());
    //Ou
    dr["ValorPromocao"] = Convert.ToDecimal(Banco.Leitor["valor_venda"]);

    Ou então isso:
    double d = double.Parse(Banco.Leitor["valor_venda"].ToString());
    dr["ValorVenda"] = d.ToString("C");

    quarta-feira, 17 de fevereiro de 2016 03:39
  • Bom dia Wesley,

    Você pode fazer a validação de um valor numérico inteiro da seguinte maneira:

    int numero = 0;
    
    bool validaNumero = Int32.TryParse(VALOR_QUE_SERA_VALIDADO, out numero);
    
    // OU
    
    
    int numero = 0;
    
    if (Int32.TryParse(VALOR_QUE_SERA_VALIDADO, out numero))
    {
       // CASO O CONTEÚDO FOR NUMÉRICO INTEIRO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }
    else
    {
       // CASO O CONTEÚDO NÃO FOR NUMÉRICO INTEIRO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }

    Caso você queira validar um número decimal, segue o código abaixo:

    int numero = 0;
    
    bool validaNumero = Decimal.TryParse.TryParse(VALOR_QUE_SERA_VALIDADO, out numero);
    
    // OU
    
    
    int numero = 0;
    
    if (Decimal.TryParse.TryParse(VALOR_QUE_SERA_VALIDADO, out numero))
    {
       // CASO O CONTEÚDO FOR NUMÉRICO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }
    else
    {
       // CASO O CONTEÚDO NÃO FOR NUMÉRICO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    quarta-feira, 17 de fevereiro de 2016 10:49

Todas as Respostas

  • como validar os valores numéricos no "cells" de uma coluna?

      DataTable dt = new DataTable();
                    dt.Columns.Add("Codigo", typeof(string));
                    dt.Columns.Add("Descricao", typeof(string));
                    dt.Columns.Add("ValorVenda", typeof(string));
                    dt.Columns.Add("ValorPromocao", typeof(string));

                    while (Banco.Leitor.Read())
                    {
                        DataRow dr = dt.NewRow();
                        dr["Codigo"] = Banco.Leitor["id_servico"].ToString();
                        dr["Descricao"] = Banco.Leitor["descricao"].ToString();
                        dr["ValorVenda"] = Banco.Leitor["valor_venda"].ToString();
                        dr["ValorPromocao"] = Banco.Leitor["valor_venda"].ToString();
                        dt.Rows.Add(dr);
                    }

                    dataGridView1.DataSource = dt;

                    dataGridView1.Columns["Codigo"].Width = 48;
                    dataGridView1.Columns["Descricao"].Width = 380;
                    dataGridView1.Columns["ValorVenda"].Width = 120;
                    dataGridView1.Columns["ValorPromocao"].Width = 120;

                    dataGridView1.Columns["ValorVenda"].DefaultCellStyle.Format = "C";
                    dataGridView1.Columns["ValorPromocao"].DefaultCellStyle.Format = "C";

                 

    Não entendi?

    Coloque mais informação!


    Fulvio C

    terça-feira, 16 de fevereiro de 2016 20:44
  • Você têm um campo numérico, mas converte ele para string, esse é o problema. A formatação que você passa no DefaultCellStyle.Format = "C"; está OK, basta fazer o Cast. Ex:
    dr["ValorVenda"] =  double.Parse(Banco.Leitor["valor_venda"].ToString());
    //Ou
    dr["ValorPromocao"] = Convert.ToDecimal(Banco.Leitor["valor_venda"]);

    Ou então isso:
    double d = double.Parse(Banco.Leitor["valor_venda"].ToString());
    dr["ValorVenda"] = d.ToString("C");

    quarta-feira, 17 de fevereiro de 2016 03:39
  • Bom dia Wesley,

    Você pode fazer a validação de um valor numérico inteiro da seguinte maneira:

    int numero = 0;
    
    bool validaNumero = Int32.TryParse(VALOR_QUE_SERA_VALIDADO, out numero);
    
    // OU
    
    
    int numero = 0;
    
    if (Int32.TryParse(VALOR_QUE_SERA_VALIDADO, out numero))
    {
       // CASO O CONTEÚDO FOR NUMÉRICO INTEIRO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }
    else
    {
       // CASO O CONTEÚDO NÃO FOR NUMÉRICO INTEIRO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }

    Caso você queira validar um número decimal, segue o código abaixo:

    int numero = 0;
    
    bool validaNumero = Decimal.TryParse.TryParse(VALOR_QUE_SERA_VALIDADO, out numero);
    
    // OU
    
    
    int numero = 0;
    
    if (Decimal.TryParse.TryParse(VALOR_QUE_SERA_VALIDADO, out numero))
    {
       // CASO O CONTEÚDO FOR NUMÉRICO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }
    else
    {
       // CASO O CONTEÚDO NÃO FOR NUMÉRICO,
       // ESSE BLOCO SERÁ EXECUTADO.
    }

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    quarta-feira, 17 de fevereiro de 2016 10:49