Usuário com melhor resposta
Como atualizar DataGridView quando houver alguma alteração na tabela

Pergunta
-
Olá pessoal, estou gerando um DataGridView conforme a rotina abaixo, mas quando incluo algum registo ou faço alguma alteração, tenho que executar novamente a rotina para o Grid ficar atualizado, é correto fazer dessa forma a cada vez que tenha alguma alteração na tabela, ter que executar essa rotina ?
WindowsForm, MySQL, C#
private void atualizaGrid()
{
try
{
int linhaselecionada = 0;
if (dataGridView1.CurrentRow != null)
{
linhaselecionada = dataGridView1.CurrentRow.Index;
}
//*************************************************************************
MySqlDataAdapter da = null;
DataTable dt = null;
MySqlCommand cmd = null;
cmd = new MySqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "seleccli";
cmd.Parameters.AddWithValue("@pcodven", Int32.Parse(frmLogin.codusu));
cmd.Connection = Program.conn;
dt = new DataTable();
da = new MySqlDataAdapter(cmd);
da.Fill(dt);
this.dataGridView1.DataSource = dt;
//**************************************************************************
// CABEÇALHO
dataGridView1.Columns["status"].HeaderText = "Sta";
dataGridView1.Columns["id"].HeaderText = "Id";
dataGridView1.Columns["nomecli"].HeaderText = "Cliente";
dataGridView1.Columns["STATUS"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns["adt"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns["chd"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns["id"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView1.Columns["STATUS"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleLeft;
dataGridView1.Columns["id"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
// LARGURA DAS COLUNAS DO DATAGRIDVIEW
dataGridView1.Columns["STATUS"].Width = 30;
dataGridView1.Columns["NOMECLI"].Width = 210;
dataGridView1.Columns["DTCONTATO"].Width = 70;
if (dt.Rows.Count == 0)
{
try
{
dataGridView1.CurrentCell = dataGridView1.Rows[linhaselecionada].Cells[1];
}
catch
{
}
}
if (dt.Rows.Count > 0)
{
try
{
dataGridView1.CurrentCell = dataGridView1.Rows[linhaselecionada].Cells[1];
}
catch
{
if (linhaselecionada > 0)
{
linhaselecionada--;
dataGridView1.CurrentCell = dataGridView1.Rows[linhaselecionada].Cells[1];
}
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
Respostas
-
Olá!
Você não teria muita opção nesse caso, a não ser dar um refresh no grid todo mesmo (que é justamente o que você está fazendo).. Qual comportamento você estava esperando nesse caso?
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Marcado como Resposta Porter Porter segunda-feira, 27 de novembro de 2017 19:57
Todas as Respostas
-
Olá!
Você não teria muita opção nesse caso, a não ser dar um refresh no grid todo mesmo (que é justamente o que você está fazendo).. Qual comportamento você estava esperando nesse caso?
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Marcado como Resposta Porter Porter segunda-feira, 27 de novembro de 2017 19:57
-