¿Cómo actualizar o mostrar inmediatamente en datagridview después de insertar?

Después de ingresar datos en todo el cuadro de texto, y luego de hacer clic en el botón de enviar, no se mostrará inmediatamente en la vista de cuadrícula de datos. Tengo que volver a abrir el formulario para ver la nueva fila insertada. ¿Qué código poner para actualizar?

Código @ usuario3222297 seguido. agregando grdPatient.Update (); y grdPatient.Refresh (); todavía no se actualiza después de hacer clic en Aceptar para insertar correctamente.

no se actualiza

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Configuration; namespace GRP_02_03_SACP { public partial class patient : Form { // Data Table to store employee data DataTable Patient = new DataTable(); // Keeps track of which row in Gridview // is selected DataGridViewRow currentRow = null; SqlDataAdapter PatientAdapter; public patient() { InitializeComponent(); } private void btnSubmit_Click(object sender, EventArgs e) { if (btnSubmit.Text == "Clear") { btnSubmit.Text = "Submit"; txtpFirstName.Focus(); } else { btnSubmit.Text = "Clear"; int result = AddPatientRecord(); if (result > 0) { MessageBox.Show("Insert Successful"); grdPatient.Update(); grdPatient.Refresh(); } else MessageBox.Show("Insert Fail"); } } private int AddPatientRecord() { int result = 0; // TO DO: Codes to insert customer record //retrieve connection information info from App.config string strConnectionString = ConfigurationManager.ConnectionStrings["sacpConnection"].ConnectionString; //STEP 1: Create connection SqlConnection myConnect = new SqlConnection(strConnectionString); //STEP 2: Create command String strCommandText = "INSERT PATIENT(pFirstName, pLastName, pContact, pAddress, pCity, pZip, pNationality, pRace, pIC, pGender, pDOB, pBloodType, pEmail) " + " VALUES (@pFirstName,@pLastName,@pContact,@pAddress,@pCity,@pZip,@pNationality, @pRace, @pIC, @pGender, @pDOB, @pBloodType, @pEmail)"; SqlCommand updateCmd = new SqlCommand(strCommandText, myConnect); updateCmd.Parameters.AddWithValue("@pFirstName", txtpFirstName.Text); updateCmd.Parameters.AddWithValue("@pLastName", txtpLastName.Text); //updateCmd.Parameters["@clientid"].Direction = ParameterDirection.Output; updateCmd.Parameters.AddWithValue("@pContact", txtpContact.Text); updateCmd.Parameters.AddWithValue("@pAddress", txtpAddress.Text); updateCmd.Parameters.AddWithValue("@pCity", txtpCity.Text); updateCmd.Parameters.AddWithValue("@pZip", txtpZip.Text); updateCmd.Parameters.AddWithValue("@pNationality", txtpNationality.Text); updateCmd.Parameters.AddWithValue("@pRace", txtpRace.Text); updateCmd.Parameters.AddWithValue("@pIC", txtpIC.Text); updateCmd.Parameters.AddWithValue("@pGender", txtpGender.Text); updateCmd.Parameters.AddWithValue("@pDOB", txtpDOB.Text); updateCmd.Parameters.AddWithValue("@pBloodType", txtpBloodType.Text); updateCmd.Parameters.AddWithValue("@pEmail", txtpEmail.Text); // STEP 3 open connection and retrieve data by calling ExecuteReader myConnect.Open(); // STEP 4: execute command // indicates number of record updated. result = updateCmd.ExecuteNonQuery(); // STEP 5: Close myConnect.Close(); return result; } private void patient_Load(object sender, EventArgs e) { LoadPatientRecords(); } private void LoadPatientRecords() { //retrieve connection information info from App.config string strConnectionString = ConfigurationManager.ConnectionStrings["sacpConnection"].ConnectionString; //STEP 1: Create connection SqlConnection myConnect = new SqlConnection(strConnectionString); //STEP 2: Create command string strCommandText = "SELECT pFirstName, pLastName, pContact, pAddress, pCity, pZip, pNationality, pRace, pIC, pGender, pDOB, pBloodType, pEmail, pUsername, pPassword FROM Patient"; PatientAdapter = new SqlDataAdapter(strCommandText, myConnect); //command builder generates Select, update, delete and insert SQL // statements for MedicalCentreAdapter SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(PatientAdapter); // Empty Employee Table first Patient.Clear(); // Fill Employee Table with data retrieved by data adapter // using SELECT statement PatientAdapter.Fill(Patient); // if there are records, bind to Grid view & display if (Patient.Rows.Count > 0) grdPatient.DataSource = Patient; } } } 

Use LoadPatientRecords() después de una inserción exitosa.

Pruebe el siguiente código

 private void btnSubmit_Click(object sender, EventArgs e) { if (btnSubmit.Text == "Clear") { btnSubmit.Text = "Submit"; txtpFirstName.Focus(); } else { btnSubmit.Text = "Clear"; int result = AddPatientRecord(); if (result > 0) { MessageBox.Show("Insert Successful"); LoadPatientRecords(); } else MessageBox.Show("Insert Fail"); } } 

Solo es necesario rellenar la cuadrícula de datos de esta manera:

 this.XXXTableAdapter.Fill(this.DataSet.XXX); 

Si usa automaticlly connect from dataGridView, este código se crea automáticamente en Form_Load ()

Intente actualizar la cuadrícula de datos después de cada inserción

 datagridview1.update(); datagridview1.refresh(); 

¡Espero que esto te ayude!

Puede configurar datagridview DataSource para null y volver a vincular nuevamente.

 private void button1_Click(object sender, EventArgs e) { myAccesscon.ConnectionString = connectionString; dataGridView.DataSource = null; dataGridView.Update(); dataGridView.Refresh(); OleDbCommand cmd = new OleDbCommand(sql, myAccesscon); myAccesscon.Open(); cmd.CommandType = CommandType.Text; OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataTable bookings = new DataTable(); da.Fill(bookings); dataGridView.DataSource = bookings; myAccesscon.Close(); } 

No sé si resolvió su problema, pero una forma simple de resolverlo es reconstruir el DataSource (es una propiedad) de su datagridview. Por ejemplo:

 grdPatient.DataSource = MethodThatReturnList(); 

En el diseñador de formularios, agregue un nuevo temporizador usando la caja de herramientas. En las propiedades, establezca “Activado” igual a “Verdadero”.

enter image description here

El conjunto DataGridView para igualar sus nuevos datos en el temporizador

enter image description here

Pruebe debajo del fragmento de código.

 this.dataGridView1.RefreshEdit();