Associare una funzione ad datasource di un datagrid in asp net

lunedì 21 maggio 2012 - 12.56

trinity Profilo | Guru

Salve ragazzi,
allora ho creato una funzione icollection che associa i dati presi da un db ad una gridview e funziona perfettamente...adesso io ho due tipologia di record che sono distinti tra loro da un valore A o P di una colonna...a seconda di questo valore tutti i movimenti (record) che fanno parte di A dovranno essere caricati in una Gridview_A mentre i movimenti che fanno parte della categoria P dovranno essere caricati nella GridView_P in pratica ci sono due gridvie distinti...ora posto il codice che ho sempre utilizzato per caricare i dati in una sola gridview e semmai una sorta di bozza di codice che dovrebbe caricare i dati nelle due gridview ma già so che è errato:

codice che funziona per una sola gridview:

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

Questo invece è il codice che mi era venuto in mente ma ovviamente secondo me c'è l'errore nel passare due valori alla funzione

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

infine ecco la stored che eseguo se può essere di aiuto:

ALTER PROCEDURE [dbo].[Read_Import_C59] ( --Dichiaro i parametri che verranno passati alla stored @CodiceAlbergo As Int, @FromData as smalldatetime, @ToData as smalldatetime ) AS BEGIN SELECT count(ALLOGGIATI.CODICE_SCHEDA_IMPORTAZIONE) As NARRIVI, ALLOGGIATI.DATA_ARRIVO, NAZ.DESCRIZIONE AS NAZIONE_REGIONE, PROV.DESCRIZIONE AS PROVINCIA, 'A' As Arrivati FROM TAB_ALLOGGIATI As ALLOGGIATI JOIN TAB_REGIONI_NAZIONI AS NAZ ON ALLOGGIATI.STATO_RESIDENZA_CODICE=NAZ.CODICE JOIN TAB_PROVINCIE As PROV ON ALLOGGIATI.PROVINCIA_RESIDENZA_CODICE=PROV.CODICE WHERE DATA_ARRIVO BETWEEN @FromData and @Todata GROUP BY ALLOGGIATI.DATA_ARRIVO, NAZ.DESCRIZIONE, PROV.DESCRIZIONE UNION all SELECT count(ALLOGGIATI.CODICE_SCHEDA_IMPORTAZIONE) As NPARTITI, ALLOGGIATI.DATA_PARTENZA, NAZ.DESCRIZIONE AS NAZIONE_REGIONE, PROV.DESCRIZIONE AS PROVINCIA, 'P' As Partiti FROM TAB_ALLOGGIATI As ALLOGGIATI JOIN TAB_REGIONI_NAZIONI AS NAZ ON ALLOGGIATI.STATO_RESIDENZA_CODICE=NAZ.CODICE JOIN TAB_PROVINCIE As PROV ON ALLOGGIATI.PROVINCIA_RESIDENZA_CODICE=PROV.CODICE WHERE DATA_PARTENZA BETWEEN @FromData and @Todata GROUP BY ALLOGGIATI.DATA_PARTENZA, NAZ.DESCRIZIONE, PROV.DESCRIZIONE END

Ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

premesso che la funzione per tirare su i dati potrebbe essere migliorata....

non puoi comunque far ritornare 2 risultati nel modo che hai fatto tu. Appena richiami l'istruzione return, la funzione da un risultato e termina, quindi il codice successivo non verrà MAI eseguito.

Piuttosto fai questo:
fai restituire tutte le righe dalla tua funzione, senza distinguere A o P
DataView dv = CreateDataSource() Me.GridView1.DataSource = dv.RowFilter = "columnName = ""A""" Me.GridView2.DataSource = dv.RowFilter = "columnName = ""P""" Me.GridView1.DataBind() Me.GridView2.DataBind()

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

trinity Profilo | Guru

Ho capito...scusa come mai mi dici che la funziona si potrebbe scrivere meglio..potresti farmi vedere se hai un minuto? Almeno per capire e migliorare la prossima volta ;)
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

Gluck74 Profilo | Guru

be ad esempio potresti utilizzare direttamente un datatable, visto che restituisci quello, invece di usare un datareader e poi riempire una tabella

oppure caricarlo in un colpo solo:
DataTable dt = new DataTable() dt.Load(dr);
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5