none
Apagar a linha selecionada do DataGridView sem ser por cellclick RRS feed

  • Pergunta

  • Então pessoal, o problema é que ao utilizar cellclick o usuário tem que clicar e isso demora muito pro meu caso, oq eu queria era um método mais rapido, segue meu código: 
    private void Salvar_btn_Click(object sender, EventArgs e)
            {
                
                    SqlCeConnection Ligação = new SqlCeConnection("Data source =" + vars.base_dados);
                    Ligação.Open();
                    SqlCeCommand comando = new SqlCeCommand();
                    comando.Connection = Ligação;
                    foreach (DataGridViewRow linha in GrelhaResultados.SelectedRows)
                    {
                        string ID = linha.Cells["ID_venda"].Value.ToString();
                        int produto = Convert.ToInt16(linha.Cells["Quantidade"].Value);
                        comando.Parameters.AddWithValue("@ID_produto", ID);
                        comando.Parameters.AddWithValue("@Quantidade", produto);
                    }
                    comando.CommandText = "UPDATE estoque SET Quantidade = (Quantidade-@Quantidade) WHERE ID_produto = @ID_produto";
                
                comando.ExecuteNonQuery();
                comando.Dispose();
                Ligação.Dispose();
                //===============================================================================================
                SqlCeConnection ligação = new SqlCeConnection("Data source =" + vars.base_dados);
                ligação.Open();
                SqlCeCommand comando2 = new SqlCeCommand("DELETE FROM Estoquevendas WHERE ID_VED = " + id_produto, ligação);
                comando2.ExecuteNonQuery();
                comando2.Dispose();
                ligação.Dispose();
                
                construir_grelha();
    
            }
    
            private void GrelhaResultados_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                id_produto = Convert.ToInt16(GrelhaResultados.Rows[e.RowIndex].Cells["ID_VED"].Value);
    
            }
    Então como dito, usei o cellclick, até funciona mas é um método demorado, o que eu queria é que o usuario só clicasse no botão sem ter q clicar no datagridview, até pq após apagar uma linha outra é selecionada automatico então nem precisaria ser clicada manualmente, então resumindo eu quero apagar uma linha do datagridview mas sem ser por cellclick tem como?
    sábado, 8 de abril de 2017 03:20

Respostas

  • Olá.

    Basta que o botão de exclusão verifique se há alguma linha selecionada, se houver apague.

    ex:

    private void Excluir_btn_Click(object sender, EventArgs e) 
    {
    
         if(GrelhaResultados.SelectedRows.Count > 0) // Há linhas selecionadas
         {
              /// SEU Método de exclusão
         }
         else
         {
              MessageBox.Show("Nenhuma linha está selecionada.");
         }
    }
    Espero ter ajudado.

    • Marcado como Resposta DecaDrawings sábado, 8 de abril de 2017 16:05
    sábado, 8 de abril de 2017 15:23

Todas as Respostas

  • Olá.

    Basta que o botão de exclusão verifique se há alguma linha selecionada, se houver apague.

    ex:

    private void Excluir_btn_Click(object sender, EventArgs e) 
    {
    
         if(GrelhaResultados.SelectedRows.Count > 0) // Há linhas selecionadas
         {
              /// SEU Método de exclusão
         }
         else
         {
              MessageBox.Show("Nenhuma linha está selecionada.");
         }
    }
    Espero ter ajudado.

    • Marcado como Resposta DecaDrawings sábado, 8 de abril de 2017 16:05
    sábado, 8 de abril de 2017 15:23
  • Esse método até funcionaria mas eu to pegando o id da linha selecionada, eu só tenho q mudar isso: 

    private void GrelhaResultados_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                id_produto = Convert.ToInt16(GrelhaResultados.Rows[e.RowIndex].Cells["ID_VED"].Value);
    
            }
    se eu coloco esse código do id_produto no evento click do botão ele da erro pq não existe o "RowIndex", eu poderia tirar o rowindex e colocar a linha manualmente mas como o total de linhas vai ser várias não posso. 

    sábado, 8 de abril de 2017 15:58
  • Ah consegui agr, vou colocar o código que eu usei caso alguem tenha a mesma duvida:

    foreach (DataGridViewRow linha in GrelhaResultados.SelectedRows)
                {
                    id_produto = Convert.ToInt16(linha.Cells["ID_VED"].Value);
                }
            }
    
            private void GrelhaResultados_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                id_produto = Convert.ToInt16(GrelhaResultados.Rows[e.RowIndex].Cells["ID_VED"].Value);
    
            }
    

    dessa forma ele pega tanto a linha selecionada ou também a linha que for clicada

    sábado, 8 de abril de 2017 16:05