DataGrid e larghezza dinamica colonne

martedì 08 novembre 2005 - 09.50

ysdemarc Profilo | Expert

Dopo aver popolato il DataGrid come faccio a espandere le colonne in modo da visualizzare l'intero testo delle celle?

Per fare un esempio il risultato che vorrei è quello che succede in Excel facendo doppio click nell'intestazione di colonna.


Brainkiller Profilo | Guru

>Dopo aver popolato il DataGrid come faccio a espandere le colonne
>in modo da visualizzare l'intero testo delle celle?

In excel non bisogna fare doppio click nell'intestazione di colonna ma nella divisiona fra una cella e l'altra.
Anche con il DataGrid Windows Forms funziona allo stesso modo. Quando il cursore cambia e diventa così <--> fai un doppio click dove c'è la separazione fra colonne e avrai un autosize della colonna.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

ysdemarc Profilo | Expert

E' vero però mi da due complicazioni di non poco conto.

1. non è possibile farle tutte insieme come in excel. Infatti in excel selezionado tutta la griglia con un doppio clic alle divisioni di colonne tutte le colonne vanno a modificarsi a seconda del contenuto.

2. con il doppio click aprò un finestra di dettaglio e qui non riesco a capire se l'utente sta a modificare le dimensioni della colonna o appunto richiedendo il dettaglio. Infatti se l'utente ha messo lo stato attivo su qualche cella e poi clicca sull'intestazione lo stato attivo rimane sulla cella.

Un'altra cosa stranissima del DataGrid è che il doppio click all'interno della cella non viene generato se non pre sproteggere la "casella di testo" anche se ho impostato il controllo come readonly...

Ci vorrebbe qualcosa come MSHFlexGrid

Vincenzo
Programmatore sbilenco :-D

Brainkiller Profilo | Guru

>1. non è possibile farle tutte insieme come in excel. Infatti
>in excel selezionado tutta la griglia con un doppio clic alle
>divisioni di colonne tutte le colonne vanno a modificarsi a
>seconda del contenuto.

E' vero. Per fare questo è possibile fare un ciclo sulle colonne della DataGrid, misurare quanti pixel occupa il testo più lungo per ogni colonna con il metodo MeasureString se non erro e alla fine fare un resize di tutte le colonne. Un po' macchinoso ma dovrebbe funzionare.

>2. con il doppio click aprò un finestra di dettaglio e qui non
>riesco a capire se l'utente sta a modificare le dimensioni della
>colonna o appunto richiedendo il dettaglio. Infatti se l'utente
>ha messo lo stato attivo su qualche cella e poi clicca sull'intestazione
>lo stato attivo rimane sulla cella.

Mmmh... non hai la possibilità di capire se clicca su una cella piuttosto che su un Header ?

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5