Ciao a tutti,
eccomi di nuovoho un altro piccolissimo problema, non riesco a fare il refresh di un datagrid dopo l'eliminazione di una riga, infatti x poter vedere le modifiche devo chiudere il browser e riaprirlo come mai?!?
Grazie
Ciao a tutti,
eccomi di nuovoho un altro piccolissimo problema, non riesco a fare il refresh di un datagrid dopo l'eliminazione di una riga, infatti x poter vedere le modifiche devo chiudere il browser e riaprirlo come mai?!?
Grazie
Alla fine della procedura che utilizzi per eliminare il record dalla fonte dati della datagrid richiami il databind della datagrid (es. dg.databind)?
Saluti a tutti
Riccardo
Controlla perchè si fa esattamente come ha detto riccardoneOriginariamente inviato da Beziel
si ma non succede nulla![]()
Alla fine della procedura di cancellazione devi richiamare un'altra procedura che fa il DataBind, ossia, recupera i dati dalla fonte dati aggiornata e fa poi il DataBind![]()
Pietro
Forse ho capito dove sta il problema, ma non lo so risolvere:
Allora il datasource del datagrid è un dataview che non è messo nella cache.
Secondo voi può essere questo ol motivo? Se si come posso risolvere!?!?
Grazie
Un modo per gestire una datagrid su una web form, puo' essere quello di:Originariamente inviato da Beziel
Allora il datasource del datagrid è un dataview che non è messo nella cache.
Per popolare la grid:
- fai una funzione GetDataSource che restituisce una datatable riempita collegandoti al database e la mette in un contenitore (es. cache, session ecc.) che potrebbe chiamarsi session("dt")
- fai una funzione BindGrid che restituisce una dataview leggendola dal contenitore suddetto
- nella proprieta' datasource della datagrid associ BindGrid
- nel load della pagina (o quando vuoi tu e/o fai modifiche) chiami il databind della datagrid.
Modifiche dell'utente ai dati
- quando l'utente modifica i dati (es. mette in edit una riga, modifica i campi e preme ok) si scatena un evento onupdatecommand che modifica la tabella presente in session("dt") e infine si chiama il databind dela datagrid
- quando si vognliono rendere persistenti i dati nel database, si clicca su un pulsante "salva" esterno alla datagrid che aggiorna il database e infine si richiama GetDataSource e si fa il databind della datagrid.
In questa maniera non si va a disturbare continuamente il database e si da la possibilita' all'utente di non rendere persistenti nel db le modifiche.
Saluti a tutti
Riccardo
Ho provato ma non ci sono riuscito potresti farmi un esempio pratico x piacere? grazie.
Si fa prima se fai vedere tu come hai implementato la metodologia che ti ho consigliato. (posta le singole funzioni getdatasource e bindgrid e di dove hai piazzato il comando dg.databind).Originariamente inviato da Beziel
Ho provato ma non ci sono riuscito potresti farmi un esempio pratico x piacere? grazie.
Saluti a tutti
Riccardo
ho risolto grazie 1000 ecco le varie funzioni:
codice:private void Page_Load(object sender, System.EventArgs e) { if(!Page.IsPostBack) { BindNewsGrid(); } } private void BindNewsGrid() { GetDataSource(); dataGridnews.DataSource=dv; dataGridnews.DataBind(); } private bool IsNull(object o) { if(o == null) return true; else return false; } private void GetDataSource() { if(!IsNull(Cache["dv"])) { dv=(DataView)Cache["dv"]; } else { dv=CreateDataset().Tables[0].DefaultView; Cache["dv"]=dv; } } private DataSet CreateDataset() { MySqlConnection cn=new MySqlConnection("database=miodb;uid=user;pwd=pass"); cn.Open(); MySqlDataAdapter da=new MySqlDataAdapter("select * from tabella",cn); DataSet ds=new DataSet(); da.Fill(ds); cn.Close(); return ds; }
e poi ogni volta che volevo aggiornare
Cache.Remove("dv");
BindNewsGrid();
cmq grazie senza la tua dritta avrei perso molto + tempo![]()