Datagridview:scegliere quali colonne visualizzare

venerdì 29 maggio 2009 - 14.03

motogpdesmo16 Profilo | Senior Member

Buongiorno a tutti,
in un progetto che sto sviluppando in Visual Studio 2008, ho la necessità di far scegliere all'utente quali colonne visualizzare in una DataGridView: la query che popola la griglia stessa mi estrapola 8 colonne, di cui 2 sempre visualizzabili e le altre 6 a discrezione dell'utente.

Avevo pensato a questa [i]strategia[/i]: creare tante checkbox quante sono le colonne, tutte con la proprietà Autopostback settata a true. Al click su ognuna di esse, viene effettuato un controllo di quali checkbox sono checckate e quali no; poi viene preparata la query che includerà le sole colonne che si desidera visualizzare ed infine verrà popolata la griglia.
A tutto questo sarebbe bello agganciare Ajax, al fine di evitare i fastidiosi refresh a cui inevitabilmente sarà sottoposta la griglia.

Ci sarebbero altre alternative a riguardo???

Grazie anticipatamente.

Dampyr Profilo | Junior Member

Buongiorno.
L'idea delle check è buona, l'unica cosa che mi sento di consigliarti e di controllare il traffico verso la base di dati, effettuare transazioni magari inutili, solo per nascondere delle colonne non so quanto efficente sia.
Secondo me potresti fare la query una volta (in modo da raccogliere i dati per la visualizzazione di tutte le colonne) e nascondere le colonne del datagridview all'evento prerender, in base ai check selezionati.
Per eliminare l'effetto dei postback, un bell'UpdatePanel dovrebbe risolvere i tuoi problemi.
Se non hai problemi di prestazioni sul db e/o hai già scritto buona parte del codice, rifai la query al cambio di valore sulle check e mantieni l'updatePanel per eliminare i "refresh".
Buona giornata

... cerca di essere il giocatore di scacchi, non il pezzo sulla scacchiera...

motogpdesmo16 Profilo | Senior Member

Ciao e grazie per l'interessamento innanzitutto. RIspetto alla mia idea penso abbia pienamente ragione quando dici di estrapolare i dati una volta sola dal database e quindi fare la query con tutte le colonne già al primo passaggio.
Stasera stessa vedrò di mettere in pratica l'idea delle textbox e sicuramente saprò già darti un feedback. Dovrei darmi un'occhiata anche all'evento PreRender, non l'ho mai utilizzato.

La mia menzione ad Ajax era ovviamente relativa all'Update Panel. Ajax l'ho usato solo per qualche prova quindi sarei dovuto andare a rivedermi il progettino di prova e/o la documentazione tecnica prima di procedere all'implementazione. Grazie comunque per avermi ricordato il particolare!

Ti terrò sicuramente informato.
Ciao

Dampyr Profilo | Junior Member

>Stasera stessa vedrò di mettere in pratica l'idea delle textbox
errore di battitura credo

>e sicuramente saprò già darti un feedback. Dovrei darmi un'occhiata
>anche all'evento PreRender, non l'ho mai utilizzato.
E' uno degli ultimi eventi della pagina a venir chiamato, che si possa intercettare.
Qui ti trovi già popolata la grid, e così facendo puoi scorrerti le colonne e visualizzarle o nasconderle in funzione delle selezioni dell'utente.
Ho già fatto un CompositeControl che faceva una cosa simile.

>La mia menzione ad Ajax era ovviamente relativa all'Update Panel.
>Ajax l'ho usato solo per qualche prova quindi sarei dovuto andare
>a rivedermi il progettino di prova e/o la documentazione tecnica
>prima di procedere all'implementazione. Grazie comunque per avermi
>ricordato il particolare!
Usando la versione 3.5 del framework hai direttamente le estensioni ajax.net utilizzabili richiamando direttamente la web.extension se non mi sbaglio.
Cmq se hai già fatto delle prove tutto dovrebbe essere immediato.

>Ti terrò sicuramente informato.
>Ciao

ciao


... cerca di essere il giocatore di scacchi, non il pezzo sulla scacchiera...

motogpdesmo16 Profilo | Senior Member

Si, è stato sicuramente una svista..ho scritto textbox anzichè checkbox. Vedrò di mettere in pratica qualcosa, anche perchè devo trovare spazio per 20 checkbox nella pagina; infatti le colonne da eventualmente nascondere/visualizzare, sono ben 20 (il contenuto è numerico comunque).
Accetto comunque la tua risposta visto che hai saputo dare i chiarimenti che cercavo!
Grazie.

Dampyr Profilo | Junior Member

>Si, è stato sicuramente una svista..ho scritto textbox anzichè
>checkbox. Vedrò di mettere in pratica qualcosa, anche perchè
>devo trovare spazio per 20 checkbox nella pagina; infatti le
>colonne da eventualmente nascondere/visualizzare, sono ben 20
>(il contenuto è numerico comunque).

Cavolo 20 check , a sto punto, se non hai problemi di tempistiche e di restrizioni varie, prova a usare il controllo della libreria AjaxToolkit, il "CollapsiblePanel"
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/CollapsiblePanel/CollapsiblePanel.aspx
In modo da visualizzare le check da selezionare solo quando l'utente vuole visualizzare o nascondere le colonne, senza rubare spazio alla pagina.
O usare altri controlli (anche il ModalPopup potrebbe essere interessante http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ModalPopup/ModalPopup.aspx)

>Grazie.

Felice di averti aiutato


... cerca di essere il giocatore di scacchi, non il pezzo sulla scacchiera...
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