none
Não consigo remover linha de um DataGridView através de uma condição RRS feed

  • Pergunta

  • Olá pessoal, estou percorrendo um DataGridView, e se uma determinada condição for satisfeita, quero deletar a linha em questão, mas não estou conseguindo deletar a linha desejada ou seja a linha que satisfaz a condição, já tentei de várias formas mas nenhuma está dando certo, o que há de errado na rotina abaixo ?


    private void substitui_item()
    {
        foreach (DataGridViewRow row in dgvVendas.Rows)
        {
            if (row.Cells[0].Value.ToString() == txtcodmerc.Text)
            {
                //dgvVendas.Rows.RemoveAt(dgvVendas.CurrentRow.Index);
                //dgvVendas.Rows.RemoveAt(dgvVendas.CurrentRow.Index.row);
                //dgvVendas.Rows.Remove;
                //dgvVendas.Rows.RemoveAt(row.Index);
                //dataGridView1.Rows.RemoveAt(item.Index); 
            }
        }
    }

    C#, WindowsForm

    terça-feira, 2 de abril de 2019 13:27

Respostas

  • Olá, se não usa DataSource, ao meu ver seu código está certo...

    private void substitui_item()
    {
        foreach (DataGridViewRow row in dgvVendas.Rows)
        {
            if (row.Cells["INDEX_ou_NOME_DO_SEU_CAMPO"].Value.ToString() == txtcodmerc.Text)
            {
                dgvVendas.Rows.RemoveAt(row.Index);
            }
        }
    }

    tenta o código no if para ignorar letras maiúsculas e acentos...

    if (String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0)
    

    Fonte: https://stackoverflow.com/a/7720903

    Se ajudou, marque como resposta! Obrigado.

    • Marcado como Resposta Porter Porter terça-feira, 2 de abril de 2019 14:35
    terça-feira, 2 de abril de 2019 14:20

Todas as Respostas

  • Olá, se vc está usando o DataSource, tem que deletar o registro da tabela e fazer o refresh do DataGridView...

    Se ajudou, marque como resposta! Obrigado.

    terça-feira, 2 de abril de 2019 13:35
  • Olá Leonardo, obrigado por responder.

    Não estou usando tabela, estou informando no Textbox e em seguida gero linhas no DataGridView através do Textbox informado, quero percorrer o DataGridView, se a condição satisfazer, deletar a linha, não estou conseguindo saber qual a linha que estou para deletar a linha. 

    terça-feira, 2 de abril de 2019 13:48
  • Olá, se não usa DataSource, ao meu ver seu código está certo...

    private void substitui_item()
    {
        foreach (DataGridViewRow row in dgvVendas.Rows)
        {
            if (row.Cells["INDEX_ou_NOME_DO_SEU_CAMPO"].Value.ToString() == txtcodmerc.Text)
            {
                dgvVendas.Rows.RemoveAt(row.Index);
            }
        }
    }

    tenta o código no if para ignorar letras maiúsculas e acentos...

    if (String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0)
    

    Fonte: https://stackoverflow.com/a/7720903

    Se ajudou, marque como resposta! Obrigado.

    • Marcado como Resposta Porter Porter terça-feira, 2 de abril de 2019 14:35
    terça-feira, 2 de abril de 2019 14:20
  • Obrigado Leonardo, agora deu certo, estava faltando um dgvVendas.Refresh()
    terça-feira, 2 de abril de 2019 14:35
  • Olá, esta dando algum erro na linha: if (row.Cells[0].Value.ToString() == txtcodmerc.Text)

    Os valores são lidos corretamente aqui: row.Cells[0].Value?

    terça-feira, 2 de abril de 2019 14:35
  • Olá Cassio,

    Se não usar o ToString(), a condição no meu caso, nunca é satisfeita, aqui está dando certo.

    terça-feira, 2 de abril de 2019 14:59