AGGIORNAMENTO O (REFRESH) DATAGRIDVIEW DA ALTRO FORM

domenica 01 febbraio 2009 - 16.32

giobaxx Profilo | Junior Member

...piano piano vado avanti ma si presentano nuovi problemi.....

ho un form principale(formq) con un gridview......aggiungo i dati chiamanto un form(chiamamolo form2) progettato appunto per l'inserimento dei nuovi record.....
Vorrei che da FORM2 potessi aggiungere più record prima di poterlo chiudere, ma ogni record aggiunto mi si potesse popolare il gridview della FORM1
...in pratica come posso aggiornare il GRIDVIEW1 su FORM1 da una FORM2??....

in questo momento i record si aggiornano solo quando chiudo la form2.......


Jeremy Profilo | Guru

Comincio con dirti che potresti passare il riferimento al form1 al form2...potresti quindi poi scrivere form1.datagridview.refresh...oppure potresti passare direttamente il riferimento al datagrid al form2......ma dipende anche da come utilizzi il codice per mostare i vari form a video.

Prendi questo mio primo consiglio per buono ed intanto, posta un pò più di codice su come istanzi i tuo form.....magari la parte relativa al button che apre il form.

Facci sapere...
Ciao



giobaxx Profilo | Junior Member

Volevo anche io provare a fare così.....ma mi sa che vale solo per il visual basic.net ...io lo sto scriverndo in visual c# e facendo
Form1 frmUP = new Form1(); poi però non esiste un frmUP.datagridview-refresh.......

Jeremy Profilo | Guru

Guarda nel file .Designer la visibilità dell'oggetto al quale vuoi accedere.
Se è private .....impostala public......

Facci sapere
Ciao..

giobaxx Profilo | Junior Member

..ALLORA HO IMPOSTATO A PUBLIC SUL DESIGNER SIA IL DATAGRIDVIEW
CHE IL TABLEADAPTER CHE RIEMPE IL DATAGRIDVIEW..
DA FORM 2 HO FATTO..
FORM1 FRM = NEW FORM1

FRM.DATAGRIDVIEW.REFRESH -> MA NON SUCCEDE NIENTE.......

POI HO POVATO

FRM.TABLEDATADPTER.FILL(DATASET.TABLE) -> anche qua non succede niente...........

boh..non so proprio che fare!!!!

Jeremy Profilo | Guru

Allora...con calma...avevamo un problema e l'abbiamo risolto adesso rimane da capire dove memorizzi i tuoi nuovi dati dalla form2(dettaglio) per capire come farli arrivare al datagrid del form1.

Quindi....il datagrid del form1 a quale fonte dati è connesso?
dal form2 dove inserisci i nuovi dati.?

Cerca, se puoi, di dare più informazioni che puoi...la cosa che vuoi fare è abbastanza semplice, non vedo grosse complicazioni, devi solo cercare di dare più informazioni.

dalle informazioni che hai dato tu...supponendo che tutto il resto sia corretto...mi verrebbe solo da dirti di impostare il codice in questo modo:
FRM.TABLEDATADPTER.FILL(DATASET.TABLE)
FRM.DATAGRIDVIEW.REFRESH

Se tutto il resto è corretto....così deve aggiornarsi la datagrid con i nuovi dati.
Ma, ovviamente, come ti ho detto nel primo post il riferimento di FRM deve essere alla stessa istanza del Form1 dal quale richiami il Form2.

Prova a scrivere questo codice nel form2 per visualizzare il form2

public void ShowForm2(Form2 FRM) { this.show; }
A questo punto....in qualche modo, nel form2 hai un riferimento all'istanza del form1 che ha aperto il form2:
quindi nel form1 scriverai:

form2 FRM=NEW FORM2(); FRM.ShowForm2(this);


Facci sapere..
Ciao.

giobaxx Profilo | Junior Member

Allora visto che sono alle prime armi ho utilizzato il wizard per associare ai dati.....
ho costruito un dataset (fotodaset ) con 2 tabelle( tblFoto e tblCostruzione ) più una query(qFoto) che attraverso il comando qfotoadapeter.fill(fotodataset.qFoto) riempe il datagridview......

quando voglio aggiundere un record apro il form due e visto che vorrei salvare le foto di una cartella può capitare di voler fare in sequenza più salvataggi....senza aprire e chudere la form2 tutte le volte che salvo una foto....però mi piacerebbe vedere tutte le volte che salvo un record su Form2 aggiungere una riga sul gridview del FORM1...in questo momento l'aggiornamento avviene solo alla chiusura della FORM2....

..cmq nella form2 ho viene Aggiornata la tblFoto i cui campi sono associati alle varie textbox e combobox attraverso la proprietà binding dei controlli...cmq faccio il tblfotoadapeter.update ed effettivamente la base dati si aggiorna.......ma la gridview sulla form1 lo fa solo dopo la chiusura della form2........

Jeremy Profilo | Guru

Così è fatto un pò di fretta ma funziona:

Form1:
private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.prova(this); }

Form2:
private Form frm1; public void btSalva_Click(object sender, EventArgs e) { Form1 _frm1 = (Form1)frm1; _frm1.TuoTableAdapter.Insert("Prova", "0000", "0000", "000", "0000"); _frm1.TuoTableAdapter.Fill(_frm1.DataSet.TuaTabella); _frm1.dataGridView1.Refresh(); } public void prova(Form frm) { this.Show(); frm1 = frm; }

Il codice comunque è provato e funzionante..

Facci sapere...
Ciao

giobaxx Profilo | Junior Member

MITTTTICO!!FUNZIONA......per le mie conoscienze è un pò una "magia" però già che cisiamo ti chiedo, vorrei cercare di approfondire un pò questi argomenti, conosci mica un buon libro che nonsia ne troppo da principianti e nenahc e troppo difficile da poter comprare.....che tratti un pò approfonditamente l'accesso ai dati...e magari anche la progemmazione windows form.......

GRAZIEEE!

Jeremy Profilo | Guru

Di libri per capire le basi della programmazione, ce ne sono tanti....io sinceramente sono orientato più verso il VisualBasic quindi al momento, per il c#, mi viene solo questo link:
http://blog.ebruni.it/blog/2008/10/recensione-del-libro-visual-c.html

Comunque cercando anche sulla rete trovi un mucchio di materiale sufficientemente chiarificante da usare a supporto dei testi che deciderai di comprare.

Ciao

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