C# iTERARE LE RIGHE DI UNA TABELLA

venerdì 12 maggio 2006 - 17.40

bluelions Profilo | Senior Member

Salve amici, vi posto un mio problema da risolvere a quanto pare un pò complicato.
Vi chiedo se potete darmi un aiuto.
Spiego subito, dovrei iterare su gli indici di una tabella, nel senso che ho una query che mi estrae una serie di campi con un indice duplicato del tipo
CampoA CampoB CampoC
1 prova c
1 prova v
1 prova f
2 prova2 g
2 prova2 h
2 prova2 p
ora dovrei caricarmi in una lista "DataList" nella prima riga
cosi
PRIMA RIGA
prova c
v
f
SECONDA RIGA
prova2 g
h
p
Perm il datalist ho gia capito come strutturalo,ma ora quando vado a caricarmi i dati avevo pensato di iterare gli indici della tabella e finchè non arrivavo alla fine e andare sulla seconda riga e così via.
POTETE DARMI UN AIUTO PER FARE CIO'...OPPURE CE UN ALTRA SOLUZIONE?
SPERO IN UN VOSTRO AIUTO.

freeteo Profilo | Guru

ciao,
puoi seguire il metodo classico di usare 2 repeater (o datalist) uno dentro l'altro, ovvero "nested".
Cioe' il primo datalist ha come itemtemplate quello che fa da raggruppamente (ovvero il campo che ha valori duplicati) , piu 1repeater che a sua volta ha 1 ItemTemplate con dentro quello che ti serve come "dettaglio" diciamo.
Del primo repeater devi gestire l'evento che ti da per ogni riga che elabora ovvero "ItemDataBound", e dentro a questo andarti a settare la sorgente del repeater che hai inserito come "figlio".
Quest'ultima operazione la fai chiamando il metodo "FindControl" dell'oggetto e.Item (che hai come firma del gestore dell'evento) e di questo repeater( o datalist) di dettaglio gli setti la sorgente dati filtrata in base al valore che hai per la riga corrente...
Immagino che con questa "spiegazione" sia facile perdersi nel ragionamento... perche si tratta di 1giro 1po difficile da spiegare a parole, percio' ti do 1link "chiarificatore" direttamente da msdn: http://support.microsoft.com/?kbid=306154
dacci 1occhiata ..


L'altro metodo che io trovo molto interessante, (ma che pero' prevede 1po di "adattamento" di come caricare i dati) sarebbe quello di usare Xpath e 1 XmlDataSource dei repeater cosi' puoi fare select usando Xpath senza intercettare eventi...cmq nel tuo caso puo' andare bene il primo

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

bluelions Profilo | Senior Member

Penso che una cosa del genere non va bene; a me seriverbbe iterare gli indici della tabella.
Mi spiego meglio; ho una tabella che riempio tramite una stored composta così:
id stringa
1 A
1 B
1 C
2 D
2 E
2 F

ora il mio datalist deve essere così:
1 A
B
C
2 D
E
F
IL FATTO è ANCHE CHE HO UNA STORED PROCEDURE CHE MI ESTRAE TUTTI I DATI......QUINDI DEVO ESEGUIRE LA STORED E POI ITERARE GLI INDICI

freeteo Profilo | Guru

ciao,
l'esempio di Microsoft che ti ho segnalato sfrutta dataset e le relations, e te lo dicevo perchè è 1buon metodo se possibile ovviamente.
Cmq nel tuo caso allora basta adattare 1po l'esempio segnalato e, come ti dicevo nel post precedente, usare repeater innestati e intercettando l'evento ItemdataBound del primo,andare a settare i dati per il in questo modo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

in questo codice uso 1a sqldataasource ma è indifferente...invece da notare che sfrutto 1a dataview sulla tabella caricata inizialmente, perche' vado comodo ad impostare il Rowfilter con il valore di campo in cui sono....
Spero con questo esempio di essere stato "piu vicino" alle tue esigenze

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

bluelions Profilo | Senior Member

ragazzi, credetemi......non ci riesco proprio a fare una cosa del genere.
Se vi posto il codice ed il template...mi date un aiuto?
Ecco il tutto in allegato
Spero in una vostra risposta

RAGAZZI nessuno può darmi una mano?
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