PDA

View Full Version : [.Net]Conversione Ilist o List<> in DataSet


RaouL_BennetH
13-10-2009, 10:05
Ciao a tutti :)

Avrei bisogno del vostro aiuto per convertire o popolare un dataset da una lista.

Questo perchè lo strumento di generazione report a disposizione, prende in pasto solo dataset o datatable.

Avreste qualche indicazione da darmi ?


Grazie mille :)

RaouL.

Kralizek
13-10-2009, 12:10
potresti serializzare la lista in xml e leggere l'xml dal dataset...

MarcoGG
13-10-2009, 12:44
Avrei bisogno del vostro aiuto per convertire o popolare un dataset da una lista.


Un DataSet lo puoi creare da zero e popolare riga per riga in modalità totalmente disconnessa. Non è assolutamente necessario partire da una base dati. Ad esempio vedi qui :
http://www.hwupgrade.it/forum/showthread.php?t=2023759
[ mio post #11 ].

Comunque, di metodi ce ne sono diversi. Dai un'occhiata anche qui :
http://www.codeproject.com/KB/vb/List2DataSet.aspx

RaouL_BennetH
13-10-2009, 13:12
Grazie per la risposta innanzitutto :)

Non ho ancora provato la tua soluzione, ma nel frattempo sono arrivato a questo:



public class ReportUtil
{

private IList<MyJobs> jobs;
private DataSet reportDs;

public IList<MyJobs> GetJobs()
{
using(ISession session = SessionManager.OpenSession())
{
jobs = session.CreateCriteria(typeof(MyJobs))
.List<MyJobs>();
return jobsM
}
}

public DataSet ConvertList(IList<MyJobs> jobs)
{
DataTable dt = new DataTable();
dt.Columns.Add("le varie colonne....");

foreach(MyJobs j in jobs)
{
if( j != null)
{
DataRow r = dt.NewRow();
r["bla"] = j.Campo1;
//etc...
dt.Rows.Add(r);
}
}

reportDs = new DataSet();
reportDs.Tables.Add(dt);
return reportDs;
}
}

Einstein
13-10-2009, 20:16
Un consiglio, visto che usi NHibernate.
Un OR/M serve per la persistenza del domain model, e la reportistica è uno di quei casi in cui usare il domain model non è conveniente, proprio perché hai bisogno di una vista "appiattita" del tuo grafo.
Il report, secondo me, è proprio quel caso in cui una stored procedure fatta come si deve ti risolve il problema: veloce e "tagliata" sul report che devi stampare.
Poi per tutto il resto c'è l'O/RM... ;-)

Ciao

RaouL_BennetH
14-10-2009, 09:10
Un consiglio, visto che usi NHibernate.
Un OR/M serve per la persistenza del domain model, e la reportistica è uno di quei casi in cui usare il domain model non è conveniente, proprio perché hai bisogno di una vista "appiattita" del tuo grafo.
Il report, secondo me, è proprio quel caso in cui una stored procedure fatta come si deve ti risolve il problema: veloce e "tagliata" sul report che devi stampare.
Poi per tutto il resto c'è l'O/RM... ;-)

Ciao

Ciao :)

Leggo solo ora il tuo messaggio ma è la stessa conclusione alla quale sono giunto ieri sera (pensando come al solito di essere un buono a nulla!)

La soluzione che ho adottato è stata semplicemente questa:

Ho creato una libreria a parte per i report, utilizzando dei business object per i dati. Questi rappresentano delle tabelle popolate mediante stored procedure.

L'unico grattacapo che sto avendo adesso è capire come funziona il linguaggio di scripting presente sul reportviewer, che mi serve per delle formattazioni particolari....