Visualizzazione dei risultati da 1 a 10 su 10

Discussione: refresh dopo delete

  1. #1
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697

    refresh dopo delete

    Ciao a tutti,
    eccomi di nuovo ho 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

  2. #2
    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

  3. #3
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    si ma non succede nulla

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Beziel
    si ma non succede nulla
    Controlla perchè si fa esattamente come ha detto riccardone

    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

  5. #5
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    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

  6. #6
    Originariamente inviato da Beziel
    Allora il datasource del datagrid è un dataview che non è messo nella cache.
    Un modo per gestire una datagrid su una web form, puo' essere quello di:
    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

  7. #7
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    grazie 1000 adesso provo

  8. #8
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Ho provato ma non ci sono riuscito potresti farmi un esempio pratico x piacere? grazie.

  9. #9
    Originariamente inviato da Beziel
    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).
    Saluti a tutti
    Riccardo

  10. #10
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.