Consigli per il riempimento di un datatable

lunedì 24 marzo 2008 - 17.43

bluland Profilo | Guru

Salve,
Ecco lo scenario:


ho un datatable con 42 colonne ed n righe,
attraverso un algoritmo avrò 5 colonne ed un numero di righe che puo essere uguale ad n o diverso,

porto a video il risultato dell'algoritmo mettendo tutto in una Table costruendola aggiungendo ad ogni cella la rispettiva combinazione

datatable[x]["nome colonna"].tostring()

ora vorrei fare in modo che l'output dell'algoritmo, vada a riempire un nuovo datatable, poiche l'algoritmo mi calcola ogni cella
(datatable[x]["nome colonna"].tostring()) via via dovrei andare a riempire la nuova datatable, e dato che il datatable per essere riempito gli dovrei importare i vari datarow,
la domanda è come faccio a costruire il datarow mettendo una per una le singole celle?
in alternativa stavo pensando di usare un array al posto del datarow ma mi sembra meno performante, cmq sono ben accettati idee e consigli...

Ciao

EDIT:

Risolto grazie lo stesso.

--------------------
Vincenzo PESANTE
System Engineer

Anonimo Profilo | Senior Member

Premesso che prima devi crearti il nuovo datatable con i classici metodi.

DataTable dt= new DataTable(); dt.Columns.Add(new Column(nomeColonna1, tipoDiDati); // prima colonna dt.Columns.Add(new Column(nomeColonna2, tipoDiDati); // seconda colonna dt.Columns.Add(new Column(nomeColonna3, tipoDiDati); // terza colonna dt.Columns.Add(new Column(nomeColonna4, tipoDiDati); // quarta colonna dt.Columns.Add(new Column(nomeColonna5, tipoDiDati); // quinta colonna dt.AcceptChanges();

Ora dove devi aggiugere una riga e assegnarne i valori basterà scrivere:

DataRow dr=dt.NewRow(); dr["nomeColonna1"]=valore1; dr["nomeColonna2"]=valore2; dr["nomeColonna3"]=valore3; dr["nomeColonna4"]=valore4; dr["nomeColonna5"]=valore5; dt.Rows.Add(dr); dt.AcceptChanges();

e sei a posto. Se l'aggiunta delle righe avviene in una funzione a parte ricordati nei parametri di passare il DataTable. Se invece stai usando degl'handler per degli eventi allora di consiglio di mettere tutto il datatable in un ViewState e accederci tranquillamente dalla funzione. Se non ti è chiaro qualcosa chiedi pure.
Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

bluland Profilo | Guru

Grazie della risposta, ma gia avevo risolto,

solo che a differenza tua non ho richiamato il medoto acceptchanges,


Come mai l'hai richiamato?


CIao
--------------------
Vincenzo PESANTE
System Engineer

Anonimo Profilo | Senior Member

Per controllare da codice il momento in cui il datatable viene effettivamente modificato.


Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer

bluland Profilo | Guru

Quindi potrei usare questo metodo quando si verifica un update o l'inserimento di una riga,

ma nel mio codice ho creato un algoritmo abbastanza complesso che mi genera il datatable
per cui mettere questo controllo magari ne ridurrebbe solo le performance.

Che ne pensi?


CIao
--------------------
Vincenzo PESANTE
System Engineer

Anonimo Profilo | Senior Member

Le performance dipendono solo dal server su cui gira l'applicazione, ovviamente su un celeron è tutto pesante su 4 xeon in parallelo forse no... Dipende da dove fai girare tutto. Comunque in linea di massima per quanto l'algoritmo sia complesso non direi che appesantisce tutto. Quello che rallenta parecchio sono le query complesse sul db per quelle è meglio optare per stored procedure, fatto quello anche questo problema è risolto.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Senior Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5