none
Validar dados do Datagridview RRS feed

  • Pergunta

  •  

    Pessoal como eu faço para validar dados dentro de um Datagridview eu gostaria que em uma determinada coluna somente fossem digitados valores numericos e em outra somente valores do tipo data dd/mm/yyyy por exemplo como faço para validar a digitação dentro das celulas

     

     

    Obrigado

    sábado, 31 de maio de 2008 19:21

Respostas

Todas as Respostas

  • Voce pode validar como valida uma textbox, utilizando o evento CellValueChanged, ou seja quando uma célula é altera e voce sai dela.

     

    Ex:

    Code Snippet

    Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged

       ' Verifica qual é a coluna (neste caso a 2)

       If e.ColumnIndex = 2 Then

        ' Validação aqui

       End If

    End Sub

     

     

     

    sábado, 31 de maio de 2008 21:04
  • Opa valeu pela resposta mas fiz um teste aqui e creio que eu esteja fazendo algo de errado rss isso com certeza estou

    Tenho uma datagridview e quero fazer com que o usuario tenha que preencher uma coluna a codigo por exemplo que é a primeira coluna

     

    private void dtg_CellValueChanged(object sender, DataGridViewCellEventArgs e)

    {

    if (e.ColumnIndex == 0)

    {

    if (dtg[0, e.RowIndex].Value.ToString() == "")

    {

    MessageBox.Show("Codigo em branco !");

    }

    }

    }

     

    Mas esta dando erro ao rodar o projeto diz que a linha não pode ser de valor negativo e aponta a linha do segundo IF pois eu preciso setar a coluna que quero consistir e a linha corrente.

     

    Valeu

     

     

    domingo, 1 de junho de 2008 13:52
  • Quando o controlo DataGridView está sendo construido o valor inicial do e.RowIndex = -1 porque o header também é uma linha.

     

    Melhore a validação acrescentando:

     

        e.ColumnIndex == 0 && e.RowIndex != -1

     

    (acho que é assim porque não programo em c#)

    domingo, 1 de junho de 2008 15:08
  • Opa valeu ... eu fiz dentro de outro evento a validação e deu certo tbm usei o CellValidating creio que tenha o mesmo efeito do evento CellValueChanged por esse evento nem preciso testar o valor da propriedade RowIndex

     

    private void dtg_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

    {

    if (e.ColumnIndex == 0){

    if (string.IsNullOrEmpty(e.FormattedValue.ToString()))

    {

    dtg.Rows[e.RowIndex].ErrorText = "Campo codigo em branco !";

    e.Cancel = true;

    }

    }

    }

     

    Valeu mesmo pelas dicas agora so mais uma coisa como eu validaria uma coluna para somente aceitar datas no C# não é como no VB que temos o IsDate vc conhece algo sei que vc usa VB ... mas não custa nada perguntar

     

    Valeu abraços

    domingo, 1 de junho de 2008 15:20
  • Sim não existe o IsDate mas existe o TryParse

     

    Algo do género:

     

    DateTime.TryParse(StringDate, mydate)

     

    domingo, 1 de junho de 2008 15:50