Evento per ricaricare datagridview

martedì 08 luglio 2008 - 09.52

ely_bise Profilo | Newbie

Ciao a tutti, sono nuovo dell'ambiente windows form, di solito sviluppo in asp.net ed ho qualche perplessità su alcune logiche di funzionamento.
Io ho creato un progetto con dentro due forms, una di partenza per visualizzare un elenco di righe da una tabella di un db access usando una datagridview che viene popolata al load del form iniziale. Poi ho un'altra form che viene chiamata tramite click su un pulsante (ho usato showdialog).
In questo secondo form faccio un inserimento nella stessa tabella visualizzata nel primo form e mi piacerebbe che quando viene chiuso, il primo form con la datagridview mostrasse anche il nuovo record inserito.
Il punto è che non ci sono problemi alla chiusura della maschera di inserimento, uso this.Close(), ma sulla maschera di partenza non si verifica apparentemente nessun evento, nemmeno l'activated quindi non so come fare per ricaricare la datagridview.
Come posso fare? Qualche suggerimento?
grazie mille anticipatamente

luigidibiasi Profilo | Guru

Ci sono diverse strade... la più semplice sarebbe dichiararti una variabile nel secondo form che punti al primo e
gestirti l'evento form_closing del secondo. ( la variabile ti permette di accedere a tutte le sub e i controlli del primo)

Esempio:

Evento Click che ti apre la seconda form :

dim frm2 as secondoForm = new secondoForm()
frm2.puntatoreAlPrimo=me

.... operazione fatte nel secondo form


Evento FormClosing del secondo:

puntatoreAlPrimo.ROUTINE_AGGIORNAMENTO_TABELLA()


Scusa se non ti posto il codice ma non ho visual studio sotto mano


Luigi Di Biasi

e.disanto Profilo | Junior Member

Io proverei lanciando direttamente il metodo per il riempimento della datagrid...

Esempio:

'Load della form1
me.<tableadapter>.fill(ecc. ecc.) (ammesso che utilizzi questa forma per caricare il datagrid)

'su click del pulsante nel form1
form2.showDialog() (hai detto che hai usato showdialog, giusto?)

'su formClosing della form2 lanci nuovamente il riempimento della datagrid della form1
form1.<tableadapter>.fill(ecc. ecc.)

Prova così, dovrebbe andare...

ely_bise Profilo | Newbie

Ho creato l'evento private void FormInserisci_Closing(object sender, System.ComponentModel.CancelEventArgs e) ma se utilizzo la sintassi Form3.DgvAnagrafica.Fill....non funziona, cioè sotto Form3 (che è il form della griglia) non mi trova l'oggetto datagridview...

nel load del form della griglia uso questo codice per caricare il datagridview e nel closing da quello che ho capito dovrei usare circa la stessa cosa...giusto:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

luigidibiasi Profilo | Guru

>>Io ho creato un progetto con dentro due forms, una di partenza per visualizzare un elenco di righe da una >>tabella di un db access usando una datagridview che viene popolata al load del form iniziale. Poi ho >>un'altra form che viene chiamata tramite click su un pulsante (ho usato showdialog).

Ciao, allora... il tuo progetto ha 2 form giusto?

Nell'evento click del pulsante invece di usare showdialog utilizza:

dim nuovoForm as form2 = new form2 ( ipotizzando che form2 contenga quello che doveva contenere il dialog)
' imposta poi un riferimento al form chiamante
form2.reclaimer = me
nuovoForm.show ' mostri il form che caricavi con showDialog

Reclaimer sarà una variabile globale che dichiarerai nel secondo form in questo modo:

public Reclaimer as Form3 ' ipotizzando che form3 è il form con la datagrid


nell'evento form_closing del secondo form invece di fare direttamente riferimento a form3 utilizzi:

reclaimer.DgvAnagrafica.Fill. etc etc


Luigi Di Biasi

ely_bise Profilo | Newbie

Ciao!
Ho fatto come mi hai detto tu, ma quando sono l'evento Closing e faccio Reclaimer. mi visualizza tutti gli eventi e proprietà del form, ma non gli altri oggetti interni che ho messo nel form...

luigidibiasi Profilo | Guru

Nel form della griglia scriviti una sub public che usi per caricare ( e ricaricare) la griglia. Essendo public quando richiamai reclaimer dall'altro form dovrebbe mostrarti la sub e permettere di richiamarla.
Luigi Di Biasi

alexmed Profilo | Guru

Ciao a tutti

Ho avuto anch'io lo stesso problema ed ho risolto con una Public Sub (TableAdapter.Fill) (vedi luigidibiasi)

Messa nel "frmMain" la richiamo dal Secondo Form come "frmMain.mySubUpdate" nell'evento che mi chiude il secondo Form prima di Me.Close()

Non credo sia il metodo migliore ma funziona benissimo.

Ciao

program Profilo | Junior Member

Ciao,
anche io mi sono trovato davanti alla tua situazione.
In pratica la grid mi mostrava tutti i record del file.
Attraverso un secondo form che mi si apriva modificavo il file.

Per vedere in tempo reale le modifiche nella grid ho quindi usato il filesystemwatcher che mi ricaricava la grid ogni volta che il file venica modificato.

ely_bise Profilo | Newbie

Perfetto, grazie mille a tutti, ho risolto con il metodo di luigidibiasi!
creando una funzione public che carica la griglia nel form della griglia e richiamando la funzione dalla seconda form, nell'evento closing!
Grazie ancora!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5