Jump to content
kazzx

[RESOLVIDO]Erro ao eliminar ROW do Datagridview

Recommended Posts

kazzx

viva,

tenho este código num botão que elimina rows do datagrid

 dgv1.Rows.Remove(dgv1.CurrentRow) 

mas quando não há mais nenhuma row e eu clico no botão, dá-me este erro:

Value cannot be null. Parameter name: dataGridViewRow

cumps :confused:

Share this post


Link to post
Share on other sites
ribeiro55

Se não há nenhuma row para eliminar... coitado... tinha de estoirar :confused:

Verifica antes se existe alguma linha seleccionada:

If dgv1.SelectedRows.Count <> 0 Then dgv1.Rows.Remove(dgv1.CurrentRow)

ou verifica na SelectedCells, uma vez que o método CurrentRow apanha a linha por a célula seleccionada.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
kazzx

ya, mas tipo com este código:

 
    Private Sub btnliberta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnliberta.Click

        If dgv1.SelectedCells.Count <> 0 Then
            dgv1.Rows.Remove(dgv1.CurrentRow)
        End If

    End Sub

dá-me este erro:

Uncommitted new row cannot be deleted.

Share this post


Link to post
Share on other sites
ribeiro55

Isso já deve ter a haver com os vossos lindos databinds e automatismos que o valham. :confused:

Não te posso ser grande ajuda nesse campo.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
kazzx

eu andei para aqui a 'inventar' e o que é certo é que consegui resolver o meu problema.

então, alterei a propriedade do datagridview: AllowUserToAddRows para false.

o código do botão eliminar está assim:

    Private Sub btnliberta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnliberta.Click

        If dgv1.SelectedCells.Count <> 0 Then
            dgv1.Rows.Remove(dgv1.CurrentRow)
        End If

        If dgv1.Rows.Count = 0 Then
            btnliberta.Enabled = False
        Else
            btnliberta.Enabled = True
        End If

    End Sub

agora isto levanta um outro problema, mas noutra parte do código. isto porque uma label de um outro formulário estava a receber sempre o novo valor adicionado à datagridview.

ou seja, o datagridview está constantemente a ser actualizado e o novo valor que aparece no datagridview também ia aparecer numa label de outro formulário, e para isso (antes disto tudo) eu usava isto:

 painel.Label1.Text = dgv1.Rows(dgv1.Rows.Count - 2).Cells(0).Value 

e agora, ao usar este código dá-me este erro, nesta mesma linha de código:

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

:x

Share this post


Link to post
Share on other sites
kazzx

bastou mudar

de:

 painel.Label1.Text = dgv1.Rows(dgv1.Rows.Count - 2).Cells(0).Value 

para:

 painel.Label1.Text = dgv1.Rows(dgv1.Rows.Count - 1).Cells(0).Value 

XD

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.