Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    recuperare il contenuto di un campo..

    ciao, una domanda: con:
    codice:
    string imguri=ds.Tables["img_work_gallery"].Columns["urlimg"].ToString();
    Response.Write(imguri);
    non dovrei recuperare il contenuto di un campo? perchè mi stampa il nome del campo?
    Voglio l'alt+s anche per FF

  2. #2
    Utente di HTML.it L'avatar di Dust_79
    Registrato dal
    Mar 2001
    Messaggi
    696
    prova con
    codice:
    string imguri=ds.Tables["img_work_gallery"].Rows().Item("urlimg"].);
    Non puoi recuperare il campo dandogli solo la colonna, ha bisogno anche di un riferimento per la riga
    PAZZIA PAZZIA
    PORTAMI VIA!

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    infatti me ne sono reso conto solo adesso.. ho fatto:
    codice:
    string imguri=ds.Tables["img_work_gallery"].Rows[2]["urlimg"].ToString();
    però mi recupera solo il primo record.. come facio a recuperare tutti i record? con un ciclo? si ma come? sono in una relazione.. ti faccio vedere..
    codice:
    		private void Work_repeater_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
    		{
    		
    		string id= e.CommandName;
    			string strconn = ConfigurationSettings.AppSettings["Provider"]+Server.MapPath("~/mdb-database/")+ConfigurationSettings.AppSettings["DatabaseName"];
    			string sql_sel_lavoro = "SELECT * FROM news_lavori WHERE id="+id;
    			string sql_sel_allimg = "SELECT * FROM img_work_gallery where work_id="+id;
    			OleDbConnection conn=new OleDbConnection(strconn);
    			OleDbDataAdapter adapter_sel_lavoro= new OleDbDataAdapter(sql_sel_lavoro,conn);
    			
    			DataSet ds = new DataSet();
    			adapter_sel_lavoro.Fill(ds,"news_lavori");
    			
    
    			OleDbDataAdapter adapter_sel_img = new OleDbDataAdapter(sql_sel_allimg,conn);
    			adapter_sel_img.Fill(ds,"img_work_gallery");
    
    			//relazione
    			ds.Relations.Add("myrelation",ds.Tables["news_lavori"].Columns["id"],ds.Tables["img_work_gallery"].Columns["work_id"]);
    			
    			string imguri=ds.Tables["img_work_gallery"].Rows[2]["urlimg"].ToString();
    			Response.Write(imguri);
    			
    			
    			
    
    
    			
    			detail_repeater.DataSource = ds.Tables["news_lavori"];
    			Page.DataBind();
    
    			
    			conn.Close();
    
    
    
    		}
    mi servono gli url delle immagini (il campo "urlimg" appunto) per fare un resize delle immagini prima di fare il binding di page..

    come posso fare?
    Voglio l'alt+s anche per FF

  4. #4
    Originariamente inviato da dops però mi recupera solo il primo record.. come facio a recuperare tutti i record? con un ciclo? si ma come?
    codice:
    foreach (DataRow dr in ds.Tables["img_work_gallery"].Rows)
                   {
    				// codice per modificare il contenuto dei campi				
                   }
    cmq... il codice non mi sembra ben fatto. A prima vista sembra che il campo urlimg possa stare nella tabella news_lavori senza bisogno di creare una tabella aggiuntiva. La relazione non vedo a cosa possa servire visto che sia news_lavori che img_work_gallery sono state filtrate con lo stesso id (e quindi non ci sono altri record appartenenti a id diversi).
    Metodologicamente parlando, non mi sembra una buona idea collegarsi dall'interno del metodo al db effettuare le elaborazioni chiamare il databind dell'intera pagina (con il rischio di rifare nuovi inutili collegamenti alla base dati). Piuttosto riempi la tabella una volta per tutte, se non e' troppo grossa rendila persistente (cache o session) e all'interno del metodo indicato usa una dataview e in particolare la rowfilter per visualizzare solo il o i record che ti interessano.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da riccardone
    codice:
    foreach (DataRow dr in ds.Tables["img_work_gallery"].Rows)
                   {
    				// codice per modificare il contenuto dei campi				
                   }
    cmq... il codice non mi sembra ben fatto. A prima vista sembra che il campo urlimg possa stare nella tabella news_lavori senza bisogno di creare una tabella aggiuntiva. La relazione non vedo a cosa possa servire visto che sia news_lavori che img_work_gallery sono state filtrate con lo stesso id (e quindi non ci sono altri record appartenenti a id diversi).
    Metodologicamente parlando, non mi sembra una buona idea collegarsi dall'interno del metodo al db effettuare le elaborazioni chiamare il databind dell'intera pagina (con il rischio di rifare nuovi inutili collegamenti alla base dati). Piuttosto riempi la tabella una volta per tutte, se non e' troppo grossa rendila persistente (cache o session) e all'interno del metodo indicato usa una dataview e in particolare la rowfilter per visualizzare solo il o i record che ti interessano.
    Ciao, grazie per aver risposto..
    si sono daccordo ma permettimi di illustrarti il quadro della situazione..
    sulla pagina aspx ho un repeater che semplicemente viene popolato con dei dati provenienti dal database (delle news) e questo popolamento lo faccio all'interno dell'evento page_load:
    codice:
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!IsPostBack)
    {
    string strconn = ConfigurationSettings.AppSettings["Provider"]+Server.MapPath("~/mdb-database/")+ConfigurationSettings.AppSettings["DatabaseName"];	
    
    string sql = "SELECT Top 5 Left(testo,100)+'..' as strtesto,id,titolo,img,data_ins FROM news_lavori ORDER by data_ins ASC";
    try
    {
    OleDbConnection conn= new OleDbConnection(strconn);
    OleDbCommand cmd=new OleDbCommand(sql,conn);	
    conn.Open();
    OleDbDataReader reader=cmd.ExecuteReader();
    Work_repeater.DataSource=reader;
    Work_repeater.DataBind();
    conn.Close();
    }
    catch (Exception err)
    {
    Response.Write(err.ToString());
    }
    detail_repeater.Visible=false;	
    }
    else
    {
    //visualizzo e nascondo i rispettivi repeater
    detail_repeater.Visible=true;
    Work_repeater.Visible=false;	
    }
    }
    In questo repeater è presente un linkbutton con il quale faccio il postback e nel quale memorizzo l'id di ogni record estratto.
    Al click sul linkbutton visualizzo un altro repeater (il dettaglio della news selezionata) che contiene una descrizione completa della news selezionata.. Visualizzo il repeater dei dettagli e faccio il databinding di questo repeater nell'evento ItemCommand del repeater che visualizza l'elenco delle news (il primo):
    codice:
    private void Work_repeater_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
    {
    string id= e.CommandName;
    
    string strconn = ConfigurationSettings.AppSettings["Provider"]+Server.MapPath("~/mdb-database/")+ConfigurationSettings.AppSettings["DatabaseName"];
    
    string sql_sel_lavoro = "SELECT * FROM news_lavori WHERE id="+id;
    string sql_sel_allimg = "SELECT * FROM img_work_gallery where work_id="+id;
    
    OleDbConnection conn=new OleDbConnection(strconn);
    OleDbDataAdapter adapter_sel_lavoro= new OleDbDataAdapter(sql_sel_lavoro,conn);
    
    DataSet ds = new DataSet();
    adapter_sel_lavoro.Fill(ds,"news_lavori");
    
    OleDbDataAdapter adapter_sel_img = new OleDbDataAdapter(sql_sel_allimg,conn);
    adapter_sel_img.Fill(ds,"img_work_gallery");
    
    ds.Relations.Add("myrelation",ds.Tables["news_lavori"].Columns["id"],ds.Tables["img_work_gallery"].Columns["work_id"]);
    
    detail_repeater.DataSource = ds.Tables["news_lavori"];
    Page.DataBind();
    conn.Close();
    }
    Il perchè della relazione stà nel fatto che nel repeater dove visualizzo il dettaglio della news è presente anche un altro repeater che mi visualizza delle immagini provenienti da un altra tabella relazionata alla tabella delle news tramite l'id univoco della tabella delle news e un campo "work_id"
    adesso stavo cercando di implementare una metodo per fare il resizing di queste immagini prima di fare il databindinding del controllo Page..
    Comunque io sarò felicissimo di ottimizzare (ma anche stravolgere) il mio codice con delle indicazioni che lo possano rendere + efficiente e corretto..
    cosa mi consigli di fare?
    ah.. dimenticavo.. la tabella creata a parte per le immagini mi server per rendere il database + leggibile... cioè se creassi un campo per le immagini (l'attuale "urlimg") nella tabella news_lavori, visto che le immagini saranno + di 5 per news, dovrei dividere i vari percorsi (perchè nel campo "urlimg" ci vanno dei percorsi che portano alle immagini) con un segno che poi dovrei splittare nel codice..
    Grazie
    Voglio l'alt+s anche per FF

  6. #6
    Originariamente inviato da dops
    cosa mi consigli di fare?
    Te l'ho gia' consigliato nel precedente post.
    Cmq, aggiungo che non vedo a cosa serva riempire nuovamente la tabella news_lavori insieme alla tabella delle immagini per poi aggiungere una datarelation (quest'ultima non serve a nulla da quanto vedo nel codice). Riempi solo la tabella delle immagini filtrata con l'id che vuoi tu. E ti consiglio anche di utilizzare i parametri nelle query e non delle variabili appiccicate con un +. Questo per una questione di sicurezza.
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da riccardone
    Te l'ho gia' consigliato nel precedente post.
    Cmq, aggiungo che non vedo a cosa serva riempire nuovamente la tabella news_lavori insieme alla tabella delle immagini per poi aggiungere una datarelation (quest'ultima non serve a nulla da quanto vedo nel codice). Riempi solo la tabella delle immagini filtrata con l'id che vuoi tu. E ti consiglio anche di utilizzare i parametri nelle query e non delle variabili appiccicate con un +. Questo per una questione di sicurezza.
    scusa ma non riesco a capire.. la tabella news lavori è la stessa che mi serve per recuperare la news integrale (il dettaglio).. in pratica recupero gli stessi campi di quando visualizzo le news al caricamento della pagina.. solo che questa volta non limito il testo da visualizzare.. (nella prima select faccio un left), in più devo recuperare anche il campo imgurl della tabella che contiene le immagini e relazionarla.. non riesco a capire cos'è che non và..
    per i parametri ok
    Dai dammi una mano..
    Voglio l'alt+s anche per FF

  8. #8
    Originariamente inviato da dops
    ...la tabella news lavori è la stessa che mi serve per recuperare la news integrale (il dettaglio).. in pratica recupero gli stessi campi di quando visualizzo le news al caricamento della pagina.. solo che questa volta non limito il testo da visualizzare.. (nella prima select faccio un left), in più devo recuperare anche il campo imgurl della tabella che contiene le immagini e relazionarla.. non riesco a capire cos'è che non và..
    per i parametri ok
    Dai dammi una mano..
    ok... quindi ti serve il record della tabella news con i dettagli. Pero' c'e' da dire che il record con tutti i campi lo avevi gia' chiesto al db. Quindi potresti trovare un modo per chiedere al db tutti i record che ti servono della tabella delle news e metterli in saccoccia una volta per tutte es nel pageload if !postback nel dataset che puoi rendere persistente nella cache o session sempre che questa tabella non sia troppo grossa. Nel secondo repeater che dovrebbe rappresentare i dettagli, per quanto riguarda i dettagli della news, li recuperi senza chiederli di nuovo al db applicando una dataview.rowfilter = "id=quellochevuoi" sulla datatable del dataset in memoria. Mentre se vuoi chiedere al db le path delle immagini riempi un datareader con solo le img mettendo nel where della query l'id della news (ma potresti riempire anche una datatable se ti trovi piu' comodo).
    Saluti a tutti
    Riccardo

  9. #9
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    riccardone io per adesso visualizzo tutto abbastanza bene.. quindi mi funziona tutto, magari ad ottimizzare ci penso dopo aver fatto quest'ultima cosa.. che è recuperare i percorsi elle immagini e fare il resize di queste.. per adesso lo faccio nel codice che ho, poi dopo ti giuro che ottimizzo tutto..
    quindi volevo una mano su come recuperare i percorsi delle immagini che mi interessano.. cioè quelle immagini che fanno riferimento all'id filtrato.. quindi non tutte le immagini presenti nella tabella.. poi magari se conosci anche un metodo per fare il resize a volo..
    per il resize a volo avevo pensato alla classe Bitmap con il metogo GetThumbnailImage ..
    Voglio l'alt+s anche per FF

  10. #10
    Originariamente inviato da dops
    per il resize a volo avevo pensato alla classe Bitmap con il metogo GetThumbnailImage ..
    Su questo non ti so essere utile quindi spero altri che hanno avuto la stessa necessita' ti aiutino.
    Saluti a tutti
    Riccardo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.