Come posso aggiornare c # dataGridView dopo l’aggiornamento?

Ho un object DataGridView quando faccio clic su qualsiasi riga per aprire un modulo per aggiornare i dati della riga, ma dopo aver terminato gli aggiornamenti il ​​modulo di aggiornamento viene chiuso ma i dati di DataGridView non vengono aggiornati

Come lo posso fare ?

BindingSource è l’unico modo senza andare per un ORM di terze parti, può sembrare inizialmente piuttosto lungo, ma i benefici di un metodo di aggiornamento su BindingSource sono molto utili.

Se la tua fonte è ad esempio un elenco di stringhe utente

 List users = GetUsers(); BindingSource source = new BindingSource(); source.DataSource = users dataGridView1.Datasource = source; 

poi, quando hai finito di modificare, aggiorna il tuo object dati sia che si tratti di un DataTable o di un elenco di stringhe utente come qui e di ResetBindings su BindingSource ;

 users = GetUsers(); //Update your data object source.ResetBindings(false); 

Rebind il tuo DatagridView alla fonte.

 DataGridView dg1 = new DataGridView(); dg1.DataSource = src1; // Update Data in src1 dg1.DataSource = null; dg1.DataSource = src1; 

Non so se questo è stato davvero risolto o no … ma guardando tutte le altre risposte, nulla sembra abbastanza chiaro. Il modo migliore che ho trovato per fare questo è mettere lo stesso codice, che è stato usato per popolare il tuo datagridview in un metodo e passare il datagridview del tuo modulo, in questo modo:

 public void ConnectAndPopulateDataGridView(DataGridView dataGridView) { } 

Il codice all’interno del metodo è esattamente lo stesso del codice utilizzato per compilare il datagirdview origine, tranne che per il nome del datagridview cambia in qualunque cosa l’abbiate chiamato nel metodo.

Ora questo metodo è chiamato nella tua forma genitore.

Il modulo figlio viene lanciato tramite un .ShowDialog() quindi il metodo viene chiamato così che viene chiamato subito dopo che il figlio è chiuso … in questo modo:

 ChildForm.ShowDialog(); ConnectAndPopulateDataGridView(dataGridView1); 

Hai solo bisogno di ridefinire il DataSource . Quindi, se hai ad esempio DataSource di DataGridView che contiene a, b, ic:

 DataGridView.DataSource = a, b, c 

E improvvisamente si aggiorna il DataSource in modo da avere solo aeb, è necessario ridefinire il DataSource:

 DataGridView.DataSource = a, b 

Spero che tu lo trovi utile

Grazie.

È ansible utilizzare SqlDataAdapter per aggiornare DataGridView

  using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Table", conn)) { DataTable dt = new DataTable(); ad.Fill(dt); dataGridView1.DataSource = dt; } }