97 messaggi dal 07 settembre 2009
Ciao a tutti =)
ancora una volta torno con un dilemma dettato dall'ignoranza
ho cercato un pò ovunque sulla rete e sul forum ma non ho trovato soluzione...
io ho un filesession con dei dati (si tratta di un carrello per e-commerce) e li devo stampare a video... ho usato il gridview basandomi su questa guida http://www.aspitalia.com/articoli/asp.net/e-commerce-p-2.aspx ma ho letto qui http://blogs.aspitalia.com/az/post2370/Volte-Ritornano.-GridView-Repeater-ListView-Custom.aspx che la gridview è la scelta peggiore...
mi sono quindi cimentato nel listview ma mi trovo con una domanda... è possible prendere i dati dal filesession? su tutti gli esempi trovati si prendono i dati dall'sql ma a me servono i dati sul FS

come sempre ringrazio in anticipo per il vostro aiuto

Davide
540 messaggi dal 24 maggio 2002
Contributi
Ciao,

cosa intendi esattamente per "filesession"?

Se si tratta percaso del carrello in Session ("normale") e quindi immagino un oggetto strutturato per la stampa userei un semplice binding per i dati "comuni"
<%#Carrello.Data%>


e un repeater per i dati multipli

<asp:repeater DataSource="<%#Carrello.Articoli%>" runat="server">......</repeater>



Marco.
97 messaggi dal 07 settembre 2009
per file session intendo il file session :P è un modulo che aggiunge un identificativo di sessione sull'url http://www.aspitalia.com/articoli/asp.net/filesession.aspx

cmq
<%#Carrello.Data%>
e
<asp:repeater DataSource="<%#Carrello.Articoli%>" runat="server">......</repeater>
come funzionerebbero?
diciamo che io posso ricavare (non da db) idoggetto nomeoggetto quantitaoggetto etc e possa eventualmente metterli dentro a delle variabili... un arraylist o una string[] o non so...
cosa dovrei fare per riempire la listview?
considera che è la prima volta che lo uso e non ho molta dimistichezza nemmeno con le repeat che fino a poco tempo fa usavo le table -.- (e me ne vergogno)
Modificato da doppiomango il 13 settembre 2010 11.46 -
L'idea è di avere delle classi che ti modellano i dati restituiti dal repository (db o session, sta a te la scelta, dipende dalla situazione)

Nel tuo caso ad esempio potresti fare una classe Articolo che espone le property di base tipo ID, quantità, prezzo etc etc e poi una classe Carrello con List<Articolo> all'interno.

Dopo che hai effettuato la lettura del Carrello, ti basta fare qualcosa del genere (supponendo di avere una ListView nella pagina che si chiama myList) :
this.myList.DataSource = Carrello.Articoli;
this.myList.DataBind();


Ovviamente devi aver creato il template per la ListView in modo da specificare come vuoi che venga effettuato il rendering degli articoli nella pagina :)

Davide Guida
Developer, Data Manager @ Publicis Healthware
http://davideguida.netne.net
97 messaggi dal 07 settembre 2009
... quindi si può fare anche il binding come se fosse una dropdownlist o una gridview?

io nel gridview ho fatto così
    DataTable dt=new DataTable("carrello"); 
    dt.Columns.Add("id",typeof(int)); 
    dt.Columns.Add("prodotto",typeof(string)); 
    dt.Columns.Add("quantita",typeof(int)); 
    dt.Columns.Add("prezzo",typeof(float)); 
    dt.Columns.Add("prezzotot",typeof(float)); 
    DataRow dr=null; 
 
    Hashtable ht = null; 
    if (FS.Exist("carrello"))  
    { 
      ht=(Hashtable)FS.Read("carrello");  
      IDictionaryEnumerator eid = ht.GetEnumerator();  
      string qtg = ""; 
      string idg = ""; 
      while (eid.MoveNext()) 
      { 
        qtg += eid.Value+"|"; 
        idg += eid.Key+","; 
      } 
      idg = Regex.Replace(idg+"#",",#",""); 
 
      SqlConnection cn = new SqlConnection(connessione); 
      SqlCommand command; 
      SqlDataReader reader; 
      string sql; 
      int i = 0; 
 
      sql = codice sql; 
       
      cn.Open(); 
 
        command = new SqlCommand(sql, cn); 
        reader = command.ExecuteReader(); 
 
        while (reader.Read()) 
        { 
          dr=dt.NewRow(); 
          dr["id"]=reader["IDGioielli"].ToString(); 
          dr["prodotto"]="<a href='link'>"+reader["nome"]+"</a>"; 
          dr["quantita"]=qtg.Split('|')[i]; 
          dr["prezzo"]=prezzo; 
          dr["prezzotot"]=prezzo*Convert.ToDouble(qtg.Split('|')[i]); 
          dt.Rows.Add(dr); 
          i++; 
        } 
 
      cn.Close(); 
    } 
    DataGrid1.DataSource =  dt;  
    DataGrid1.DataBind(); 

quindi nel momento in cui ho invece una classe con list con tutte le variabili mi basta fare il binding di quella classe con al posto del dt traminte DataSource giusto?
praticamente si. Ti basta avere un'array di oggetti di tipo Articolo ed impostarli come DataSource della ListView :)

Davide Guida
Developer, Data Manager @ Publicis Healthware
http://davideguida.netne.net
540 messaggi dal 24 maggio 2002
Contributi
doppiomango ha scritto:
per file session intendo il file session :P


scusa la mia ignoranza, non sapevo della sua esistenza...

Ho colto l'occasione di leggere l'articolo che hai segnalato e mi rimane comunque una domanda: sei sicuro che l'utilizzo della sessione "normale" non sia sufficiente?

Per il resto concordo con quento detto da mizrael.

Marco.
Modificato da makbox il 13 settembre 2010 14.58 -
makbox ha scritto:
Ho colto l'occasione di leggere l'articolo che hai segnalato e mi rimane comunque una domanda: sei sicuro che l'utilizzo della sessione "normale" non sia sufficiente?


E' all'interno del seguente articolo che l'autore motiva la scelta:
Session su File con ASP.NET: FileSession
Modificato da naighes il 13 settembre 2010 15.22 -

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC