Usuário com melhor resposta
Apagar a linha selecionada do DataGridView sem ser por cellclick

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?
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
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
-
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.
-
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