Usuário com melhor resposta
Eliminar ou excluir linha apenas do datagridview

Pergunta
-
Boa noite!
Tenho uma datagridviewA onde pretendo eliminar linha(s). Consigo enviar a(s) linha(s) escolhida(s) passando de uma datagridviewB para datagridviewA sem problemas.
Consigo eliminar a(s) linha(s) da datagridviewA através de uma Coluna imagem.
O que acontece é o seguinte: mesmo eliminando linha(s) da datagridviewA, ao abrir o datagridviewB para adicionar nova(s) linha(s), as linha(s) que tinha(m) sido eliminado(s), voltam a aparecer na datagridviewA novamente.
estou eliminando a(s) linha(s) na datagridviewA antes de envia-lo para BD se caso houver engano na escolhas das linhas.
Podiam ajudar-me nisso por favor?
Agradeço desde já a vossa atenção e apoio.
//Codigo para abrir o formulario com a datagridview para escolher a linha a ser seleccionada e a enviar private void btnpesq_nome_Click(object sender, EventArgs e) { frmListaEstomProt frm = new frmListaEstomProt(); frm.ShowDialog(); string value = frmListaEstomProt .RecordId; carregaDados(value); }
//Codigo para carregar datagridview para escolher a linha a excluir private void carregaDados(string value) { db = new BDconexao.accessBD(); dataGridView1.DataSource = null; dataGridView1.Rows.Clear(); dataGridView1.Refresh(); string connectionString = db.getConnectionString(); string newvalue = value.Substring(0, value.Length - 1); //string query = "SELECT * FROM ((SELECT * FROM protese) UNION (SELECT * FROM tratamento_estomat)) as tb "; string query = "SELECT * FROM ((SELECT id, descricao, codigo, preco_clinica, comparticipacao_perc, comparticipacao_max,comparticipacao_inps,comparticipacao_segurado, total_tratamento FROM protese)"; query += "UNION (SELECT id, descricao, codigo, preco_clinica, comparticipacao_perc, comparticipacao_max, comparticipacao_inps, comparticipacao_segurado, total_tratamento FROM tratamento_estomat) )"; query += "AS tb "; query += "WHERE tb.codigo in (" + newvalue + ") "; using (MySqlConnection conn = new MySqlConnection(connectionString)) { using (MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn)) { try { DataTable dataTable = new DataTable(); adapter.Fill(dataTable); for (int i = 0; i < dataTable.Rows.Count; i++) { dataGridView1.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][2], dataTable.Rows[i][1], dataTable.Rows[i][3], dataTable.Rows[i][4], dataTable.Rows[i][5], dataTable.Rows[i][6], dataTable.Rows[i][7], dataTable.Rows[i][8]/*, dataTable.Rows[i][9]*/); } dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; /* DataSet ds = new DataSet(); MySqlDataAdapter cmd = new MySqlDataAdapter(query, conn); cmd.Fill(ds); dataGridView1.DataSource = ds.Tables[0];*/ for (int row = 0; row <= dataGridView1.Rows.Count - 1; row++) { ((DataGridViewImageCell)dataGridView1.Rows[row].Cells[9]).Value = Properties.Resources.eliminar; } } catch (Exception ex) { MessageBox.Show("Error" + ex); } } } }
//Codigo para apagar a linha seleccionada private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 0 || e.RowIndex < 0) return; // header clicked if (e.ColumnIndex == dataGridView1.Columns["Eliminar"].Index /*|| e.ColumnIndex == dataGridView1.Columns["Pagamento"].Index*/) { // Your logic here. You can gain access to any cell value via DataGridViewCellEventArgs string address = dataGridView1["Eliminar", e.RowIndex].Value.ToString(); //Primeiramente verifico se existe alguma linha selecionada e faço a mensagem para o usuário decidir se deseja remover! if (dataGridView1.SelectedRows.Count > 0 && MessageBox.Show("Você realmente deseja excluir a linha selecionada?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == System.Windows.Forms.DialogResult.Yes) { dataGridView1.Rows.Remove(dataGridView1.CurrentRow); // apagar a linha do dataGridView1 // dataGridView1.DataSource = null; //Remover a datasource dataGridView1.Refresh(); //Para a grid se actualizar } ////MessageBox.Show("Eliminar::" + dataGridView1["codigo", e.RowIndex].Value.ToString()); //****** } }
- Editado Flavio dos Reis terça-feira, 21 de março de 2017 21:21
Respostas
-
Bom dia,
Acredito que se você remover apenas do dataGridView isso vai continuar acontecento.
É preciso remover do DataSet também.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Flavio dos Reis sexta-feira, 7 de abril de 2017 15:20
-
Caros alguma ideia sobre como resolver o problema? já tentei vários procedimentos mas sem sucesso.
Agradecia o vosso apoio.
- Marcado como Resposta Flavio dos Reis sexta-feira, 7 de abril de 2017 15:20
Todas as Respostas
-
Bom dia,
Acredito que se você remover apenas do dataGridView isso vai continuar acontecento.
É preciso remover do DataSet também.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Flavio dos Reis sexta-feira, 7 de abril de 2017 15:20
-
Olá !
Obrigado pela dica, estou usando DataTable, mesmo usando
dataGridView1.DataSource = null;
os itens eliminados, continuam a reaparecer se caso for carregado novas linhas, apos excluusao dos mesmos.
Se pudesses ver onde estou errando no codigo para apagar as linhas e carregar novas linhas agradecia muito.
Obrigado
Aqui esta uma sequencia de imagens que mostra o meu problema:
essa segunda imagem é onde se escolhe as linhas para enviar
essa terceira imagem mostra as linhas para eliminar
por exemplo ao excluir essa linha que por engano foi escolhido anteriormente, desaparece da datagridview, fazendo o processo de seleção para escolher a linha correcta, aparece a nova linha mais a que tinha sido excluída.
Lembrando que os dados só serão enviados para base de dados quando houver certeza de q as linhas escolhidas sao as correctas
Como faço para resolver este problema?
Códigos encontram-se na mensagem anterior.
Desde já agradeço a vossa atenção.
- Editado Flavio dos Reis quinta-feira, 23 de março de 2017 12:57
-
Caros alguma ideia sobre como resolver o problema? já tentei vários procedimentos mas sem sucesso.
Agradecia o vosso apoio.
- Marcado como Resposta Flavio dos Reis sexta-feira, 7 de abril de 2017 15:20