c# - registros - cómo actualizar la lista de filas de una vista de cuadrícula de datos después de agregar una nueva fila a una tabla
insertar datos en una tabla sql (1)
El problema de los cambios en una DataTable
no se refleja en un DataGridView
es muy común. El problema es que la mayoría de las implementaciones de tablas de datos y adaptadores de tablas no ListChanged
eventos ListChanged
, que son los que DataGridView
escucha para saber cuándo se debe actualizar.
.Refresh () no resuelve el problema porque solo vuelve a dibujar el área del cliente y no necesita volver a consultar el origen de datos: el DataGridView
subyacente no conoce los cambios, por lo que se vuelve a dibujar exactamente como antes.
La solución habitual para esto es restablecer el origen de datos.
dataGridView1.DataSource = null;
// Your datatable goes in the place of newDataSource
dataGridView1.DataSource = newDataSource;
También puedes hacer:
dataGridView1.DataSource = typeof(List);
dataGridView1.DataSource = newDataSource;
Esto mantendrá las columnas autogeneradas.
Probablemente también pueda suavizar esto utilizando un BindingSource
; probablemente no resuelva el problema por sí solo, ya que el origen de enlace también depende de eventos modificados, pero puede significar que se puede evitar cualquier parpadeo extraño en la cuadrícula.
Tengo una vista de cuadrícula de datos llena de una colección de tablas en el evento load del formulario, también tengo un formulario rellenado por el usuario y agrego una nueva fila al evento onclick de la tabla, me gustaría actualizar el datagridview después de agregar una nueva fila al tabla, utilizo un sqladapter vinculado a un bindingdatasource. este es el código
private void button1_Click(object sender, EventArgs e)
{
connection.Open();
string nv = textBox7.Text.Trim().Replace('','', ''.'');
//
string sql="";
sql = "INSERT INTO Employe(id_cnss, nom, prenom, adresse, tel,email,mt_heur_travail, titre) VALUES(''"+textBox1.Text.ToString().Trim()+"'',''"+textBox2.Text.ToString().Trim()+"'',''"+textBox3.Text.ToString().Trim()+"'',''"+richTextBox1.Text.ToString().Trim()+"'',''"+textBox4.Text.ToString().Trim()+"'',''"+textBox5.Text.ToString().Trim()+"'',"+nv+",''"+textBox6.Text.Trim()+"'')";
// sql = "UPDATE Employe SET id_cnss =''" + + "'' , nom =''" + + "'', prenom =''" + + "'', adresse =''" + + "'', tel =''" + + "'', email =''" + + "'', mt_heur_travail =" + + ", titre =''" + + "'' where id_cnss=" + index;
c = new SqlCommand(sql, connection);
c.CommandText = sql;
// IAsyncResult res;
int ex = c.ExecuteNonQuery();
if (ex != null)
{
MessageBox.Show("employé ajouté");
//dataGridView1.Rows.Clear();
//DataTable table = (DataTable)dataGridView1.DataMember;
adapter = new SqlDataAdapter("select * from employe where id_emp=IDENT_CURRENT(''EMPLOYE'')", connection);
adapter.Fill(dTable);
//adapter.Update(dTable);
dataGridView1.Refresh();
}
connection.Close();
}
este código agrega todas las filas de la tabla a la vista de cuadrícula de datos, pero solo necesito agregar la fila más reciente agregada a la base de datos brevemente, cuando el usuario haga clic en Agregar,
Me gustaría que la nueva fila se agregará a la vista de la cuadrícula de datos Y gracias de antemano