ciao,
ho un DataTable chiamato 'Articoli' costituito, fra gli altri dei seguenti campi:
Codice, Descrizione, Categoria, SottoCategoria, Produttore, Prezzo, UltimoCosto, ecc..
La visualizzazione che voglio ottenere è la seguente:
Produttore
codice, descrizione, ecc.
codice, descrizione, ecc.
Produttore
codice, descrizione, ecc.
codice, descrizione, ecc.
Produttore
codice, descrizione, ecc.
codice, descrizione, ecc.
Per ottimizzare le risorse sul database (SqlServer2k) eseguo il metodo (fa parte di un WebService) che mi riempe questo DataTable, all'interno di un DataSet, solo al caricamento della pagina; lo stesso datatable lo uso in una prima istanza per effettuare il binding di un DataRepeater che in ogni suo Item riporta il logo del produttore (l'immagine ovviamente è ricavata, previo controllo della presenza attraverso il filesystem, dal codice del produttore letto dal DataTable in questione) seguito da un DataGrid valorizzato con i dati degli articoli che appartengono a quel produttore. Quest'ultima operazione è eseguita durante il binding, appunto del repeater, e ad ogni istanza il DataView viene nuovamente filtrato per fillare il DataGrid coi soli record che riguardano gli articoli del produttore di turno.
Naturalmente funziona, e risulta una soluzione poco costosa perché leggo i dati una sola volta (altrimenti, essendo la query una serie di join tra più tabelle, più l'operazione di filtro per categoria, sottocategoria, importo massimo, testo di ricerca ecc sarebbe una soluzione troppo costosa in termini di risorse, essendo eseguita da remoto mediante web service) e non faccio altro che filtrare il DataView ad ogni ciclo. Il problema è che, ovviamente, una volta ordinati i risultati per produttore, nel repeater vengono ripetute n istanze dello stesso datagrid per lo stesso produttore, tante quanti sono gli articoli del produttore.
In pratica ottengo qualcosa del tipo:
ASUS
[lista di articoli]
ASUS
[lista di articoli]
ASUS
[lista di articoli]
ABIT
[lista di articoli]
ABIT
[lista di articoli]
e così via, ottengo tante ripetizioni per ogni produttore quanti sono i suoi articoli.
Veniamo al dunque
Naturalmente per evitare questo inconveniente, dovrei dare in pasto al DataRepeater una selezione di dati in cui i valori dei produttori sono unici e non ripetuti tanti quanti sono gli articoli di ogni singolo produttore.
In pratica, vorrei ottenere lo stesso effetto della clausola SQL Distinct ma utilizzando quell'unico DataTable letto, evitando dunque più letture (=più connessioni).
E', in qualche modo, possibile filtrare valori unici da un DataTable/DataView?
Grazie in anticipo![]()


Rispondi quotando
