Usuário com melhor resposta
Selecionar linha do datagridview e adicionar as informações dela em uma nova linha na ultima posição c#

Pergunta
-
Boa Noite,
Estou finalizando meu tcc e preciso de uma ajuda, meu projeto é de agendamento de consultas, e agora fui obrigada a colocar um botão de cancelar a consulta agendada, não posso excluir-la, então criei a logica de ao selecionar a linha do datagridview e clicar botão cancelar, ele pega os dados daquela linha acrescenta como uma nova linha no final do datagridview e limpa a linha selecionada. O que conseguir fazer até agora foi selecionar a linha mas não sei como pegar as informações dela em uma nova linha.
O codigo ta assim:
//Botão de cancelar consultas private void button1_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { var row = dataGridView1.SelectedRows[0]; } }
Alguém pode me ajudar?
Respostas
-
Você poderia ao invés de mudar a posição na grid criar mais um campo tipo ativo e somente listar as consultas agendadas ativas na grid e quando cancela-se a consulta só atualizaria o status para inativo e recarregava a grid.
É só uma sugestão, pois se o usuário de repente reoordenar a grid na sua logica atual a consulta cancelada reapareceria no topo novamente
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 17 de fevereiro de 2017 11:10
Todas as Respostas
-
Olá, você pode fazer dessa forma:
if (dataGridView1.SelectedRows.Count != 0) { DataGridViewRow row = this.dataGridView1.SelectedRows[0]; var valor = row.Cells["ColumnName"].Value; }
João Paulo Gomes
http://blog.johnowl.com/
- Editado John Owl terça-feira, 14 de fevereiro de 2017 22:59
-
-
-
-
Fiz um teste e funcionou, veja se ficou claro:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // carregando dados de exemplo //============================= dataGridView1.Rows.Add(); dataGridView1.Rows.Add(); dataGridView1.Rows.Add(); dataGridView1.Rows.Add(); dataGridView1.Rows[0].SetValues(1, "José da Silva"); dataGridView1.Rows[1].SetValues(2, "Maria da Silva"); dataGridView1.Rows[2].SetValues(3, "Pedro da Silva"); dataGridView1.Rows[3].SetValues(4, "João da Silva"); } private void button1_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { var row = dataGridView1.SelectedRows[0]; int id = Convert.ToInt32(row.Cells[0].Value); string nome = row.Cells[1].Value.ToString(); dataGridView1.Rows.RemoveAt(row.Index); dataGridView1.Rows.Add(id, nome); } } }
João Paulo Gomes
-
Olá,
Faz assim:
private void button1_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { var row = dataGridView1.SelectedRows[0]; dataGridView1.Rows.Add(row); dataGridView1.Rows.RemoveAt(row.Index); } }
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Editado André SeccoMVP quarta-feira, 15 de fevereiro de 2017 00:00
-
Andressa, boa noite.
Sua aplicação é windowsforms correto?? se sim tenta dessa forma :
private void button1_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { var row = dataGridView1.CurrentRow.Cells[0].Value.ToString(); } }
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) quarta-feira, 15 de fevereiro de 2017 00:01
-
-
-
-
VOcê pode alterar diretamente os valores do DataTable.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private DataTable dt; private void Form1_Load(object sender, EventArgs e) { dt = new DataTable(); dt.Columns.Add("Id"); dt.Columns.Add("Nome"); dt.Rows.Add(1, "José da Silva"); dt.Rows.Add(2, "João da Silva"); dt.Rows.Add(3, "Maria da Silva"); dt.Rows.Add(4, "Pedro da Silva"); dataGridView1.DataSource = dt; } private void button1_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { var row = dataGridView1.SelectedRows[0]; var dataRow = dt.Rows[row.Index]; dt.Rows.Add(dataRow[0], dataRow[1]); dt.Rows.RemoveAt(row.Index); } } }
João Paulo Gomes
-
sim jovem.
conexaoDataSet = new DataSet(); conexao = new MySqlConnection("SERVER=localhost;DATABASE=teste;UID=root;PASSWORD=;"); try { conexao.Open(); string consu = "select a.HR ,b.dataa,b.Cd_Consulta,g.Nome_Paciente, g.Cd_Paciente, c.Nome_Dentista, d.Descricao,p.Descri from horario a left join consultas b on (a.Cd_hr=b.cd_hr and b.Dataa LIKE '%" + monthCalendar1.SelectionRange.Start.Date.ToString("yyyy-MM-dd") + "%' and b.cro LIKE '%" + comboBox2.SelectedValue + "%') left join paciente g on g.cd_paciente=b.Cd_Paciente left join dentista c on c.CRO=b.cro left join procedimentos d on d.cd_procedimento=b.cd_procedimento left join pagamento p on p.Cd_Pagamento=b.cd_pagamento order by a.Cd_hr"; MySqlDataAdapter conexaoAdapter = new MySqlDataAdapter(consu, conexao); conexaoAdapter.Fill(conexaoDataSet, "consultas"); dataGridView1.DataSource = conexaoDataSet.Tables["consultas"]; //exibiçao datagrid dataGridView1.Columns["HR"].HeaderText = "Horarios"; dataGridView1.Columns["Cd_Consulta"].HeaderText = "Consulta"; dataGridView1.Columns["Dataa"].HeaderText = "Data"; dataGridView1.Columns["Nome_Paciente"].HeaderText = "Nome Paciente"; dataGridView1.Columns["Cd_Paciente"].HeaderText = "Codigo Paciente"; dataGridView1.Columns["Nome_Dentista"].HeaderText = "Nome Dentista"; dataGridView1.Columns["Descricao"].HeaderText = "Procedimento"; dataGridView1.Columns["Descri"].HeaderText = "Pagamento"; conexao.Close(); conexao.Dispose(); }
- Editado Andressa.s quarta-feira, 15 de fevereiro de 2017 00:42
-
Você poderia ao invés de mudar a posição na grid criar mais um campo tipo ativo e somente listar as consultas agendadas ativas na grid e quando cancela-se a consulta só atualizaria o status para inativo e recarregava a grid.
É só uma sugestão, pois se o usuário de repente reoordenar a grid na sua logica atual a consulta cancelada reapareceria no topo novamente
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 17 de fevereiro de 2017 11:10
-