Grid view con paginazione

mercoledì 17 febbraio 2010 - 22.31

mauri1961 Profilo | Senior Member

Ho una gridview che estrapola dati da visualizzare prendendoli da una tabella presente in un database creato con sqlserver 2008 express.
La gridview funziona egregiamente e mi mostra i dati prescelti, tuttavia vista la mole di dati vorrei inserire una paginazione.
Ho messo true nell’allow paging tuttavia in fase di esecuzione mi ritorna il messaggio
L’ORIGINE DATI NON SUPPORTA LA FUNZIONE PAGING.
Immagino che probabilmente ci sarà del codice da scrivere per supportarla, vista la mia pressoché totale inesperienza qualcuno può segnalarmi la soluzione a questo problema?
Inoltre se dalla medesima gridview attivo la selezione di una riga per visualizzare un dettaglio è possibile rimandare il suddetto dettaglio ad un altro foglio e se è possibile come posso fare considerando che dovrei passare anche almeno un elemento che mi permetta di leggere il dato selezionato.

paoval72 Profilo | Senior Member

Ciao e ben ritrovato. Il problema è che un dataReader non può essere paginato. Perciò dovresti bindare alla gridview un altro tipo di source (datatable o dataset).
Un esempio dal codice dell'altro tuo post, potrebbe essere questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
La paginazione va poi gestita col suo evento, che va associato al gridview:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Nel tuo codice va registrata la nuova funzione, dove gestirai il cambio di pagina e riassocerai la tua source:

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

>Inoltre se dalla medesima gridview attivo la selezione di una
>riga per visualizzare un dettaglio è possibile rimandare il suddetto
>dettaglio ad un altro foglio e se è possibile come posso fare
>considerando che dovrei passare anche almeno un elemento che
>mi permetta di leggere il dato selezionato.

Puoi specificare meglio cosa vorresti fare? Da quanto ho capito, vorresti aprire una pagina (o una finestra) di dettaglio per una determinata riga selezionata. Solo in visualizzazione?

Ciao,
PV

mauri1961 Profilo | Senior Member

Si serve solo in visualizzazione, ho quasi risolto con un gridview impostato in progettazione, il risultato è ottimo, ho introdotto anche la paginazioene che funziona. Per il dettaglio ho inserito una DETAILVIEW che mi mostra il dettaglio con tutti i campi del record. Tutto bene tranne che proprio la detail che dopo aver cliccato sulla riga selezionata nella grid view continua a visualizzarmi il primo record della tabella.

Ti invio il codice (ma non penso sia un problema insormontabile)...

Saluti, Maurizio

paoval72 Profilo | Senior Member

Curiosità: come fai a fargli selezionare la riga?
Comunque, prova a sostituire il tuo codice con questo (occhio che devi inserire la posizione della colonna 'dit_codice', dove ti ho segnalato):
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:CASSAWEBConnectionString %>" SelectCommand="SELECT * FROM [WEB_IMPR]" filterExpression="dit_codice= {indice del campo chiave da filtrare} "> <FilterParameters> <asp:ControlParameter Name="dit_codice" ControlID="GridView1" propertyname="SelectedValue" /> </FilterParameters> </asp:SqlDataSource>

PV

mauri1961 Profilo | Senior Member

non funziona, cmq la riga viene selezionata da un button presente in ogni riga della grid view (DETTAGLIO, si trova nell'ultima colonna della grid view medesima).

Ho seguito le istruzioni presenti in un articolo e al termine diceva testualmente:
"non dovrete fare altro che aggiungere al nostro datagrid un bottone di selezione(DETTAGLIO) della gestione dei campi del grid view ed il gioco è fatto..." quasi....

e io mi chiedo se nel filterexpression testa l'uguaglianza tra DIT_CODICE (della grid view) con @dit_codice (che dovrebbe essere quello da riscontrare su sqldatasource2 ) dove trova questo @dit_codice che non vedo segnalato in alcun posto del codice?

Ciao, Maurizio

p.s. comunque grazie al Tuo aiuto sto facendo grandi passi avanti

paoval72 Profilo | Senior Member

Come ti ho scritto prima, da quanto ho trovato dovresti inserire l'indice della colonna che stai cercando. Ad esempio, se il campo "dit_codice" è il 1° del tuo datasource, sarà:

filterExpression="dit_codice= {0} "

Ma il bottone che seleziona la riga è il button field al fondo della gridview? Se è così, manca l'evento che gestisce il click.
Solo per provare, alla gridview aggiungi la creazione automatica del bottone di select:

<asp:GridView AutoGenerateSelectButton="true".......

A me funziona e dovrebbe gestirti proprio l'evento scatenato dalla selezione di una riga.
fammi sapere.
PV

mauri1961 Profilo | Senior Member

FUNZIONA PERFETTAMENTE...

GRAZIE...ALLA PROSSIMA...

MAURIZIO
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