none
Consistencia para Digitação dentro do DataGridView RRS feed

  • Pergunta

  • Pessoal estou usando o recurso do DataGridView para digitação de valores diretamente dentro do DataGridView mas estou apanhando bastante para validar o é digitado dentro do Grid
    Por exemplo um campo para receber valores numericos ou campos do tipo data eu gostaria de validar o que foi inserido em uma determinada celula e se estiver errado mostrar uma mensagem ao usuario e posicionar o foco na propria celula que foi inserido o valor errado.

    Se alguem tiver um codigo exemplo ou alguma referencia para me passar agradeço ja olhei alguns codigos mas não me deram muitaaaaa ajuda ate fiz algumas validações mas sempre da uma mensagem de erro na tela.

    Outro ponto como eu validar se a linha da grid esta com algum valor eu uso um codigo assim
    if (grid[coluna,linha].value != null) --> isso hora funciona hora não funciona.

    Agradeço
    Junior
    segunda-feira, 21 de setembro de 2009 15:52

Todas as Respostas

  • Junior gere o evento CellEndEdit do dataGridView
    Nele verifique os valores, caso haja algum erro faça assim para mostrá-lo:

    this.dataGridView1.Rows[e.RowIndex].ErrorText = "erro";
    segunda-feira, 21 de setembro de 2009 16:45
  • Bom Dia

    Usei sua diga sobre mesmo tratar o erro mas ele não mostra nada ele deveria mostrar um simbolo na grid referente ao erro mas não me mostra nda


    Junior
    sábado, 26 de setembro de 2009 14:18
  • Junior vamos la, gere o evento CellValidating acho que será melhor nesse caso.
    Nesse evento compare o que está certo ou errado, supondo que a pessoa não possa escrever abc na coluna:

    private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
            {
                if (e.FormattedValue.ToString() == "abc")
                {
                    this.dataGridView1.Rows[e.RowIndex].ErrorText = "Escreveu abc";
                    e.Cancel = true;
                }
            }
    O erro aparecerá com um ! na linha do lado esquerdo, perto do lapis que indica que está editando. Porém fique atento pois quando a pessoa digitar certo lembre de apagar a mensagem de erro, sua funçção ficaria assim:

    private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
            {
                if (e.FormattedValue.ToString() == "abc")
                {
                    this.dataGridView1.Rows[e.RowIndex].ErrorText = "Escreveu abc";
                    e.Cancel = true;
                }
                else
                {
                    this.dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
                }
            }
    Caso queira comparar determinada coluna, é só usar o ColumnIndex de e, por exemplo a validação é somente para a coluna 2:

    private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
            {
                if (e.ColumnIndex == 1)
                {
                    if (e.FormattedValue.ToString() == "abc")
                    {
                        this.dataGridView1.Rows[e.RowIndex].ErrorText = "Escreveu abc";
                        e.Cancel = true;
                    }
                    else
                    {
                        this.dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
                    }
                }
            }
    Repare que a verificação será quando você tentar sair da coluna.
    sábado, 26 de setembro de 2009 18:21