Ordinamento dei dati in un controllo server Web GridView
Aggiornamento: novembre 2007
Il controllo GridView fornisce funzionalità di ordinamento incorporate per le quali non è necessario scrivere codice. È possibile personalizzare ulteriormente la funzionalità di ordinamento del controllo GridView utilizzando valori personalizzati della proprietà SortExpression per le colonne, nonché gli eventi Sorting e Sorted.
Funzionamento dell'ordinamento nel controllo GridView
Il controllo GridView non esegue l'ordinamento delle colonne autonomamente, ma si basa sul controllo origine dati, che esegue l'ordinamento per conto del controllo suddetto. Il controllo fornisce l'interfaccia utente per l'ordinamento, ad esempio i controlli LinkButton, che vengono visualizzati nella parte superiore di ogni colonna della griglia. Il controllo GridView tuttavia si basa sulle funzionalità di ordinamento dei dati del controllo origine dati a cui è associato.
Se i dati possono essere ordinati dal controllo origine dati associato, il controllo GridView interagisce con il controllo origine dati e richiede i dati ordinati passando a questo una proprietà SortExpression quando i dati sono selezionati. L'ordinamento non è supportato da tutti i controlli origine dati, ad esempio il controllo XmlDataSource non fornisce questa funzionalità. Se tuttavia il controllo origine dati supporta l'ordinamento, il controllo GridView ne usufruirà. Nell'elenco riportato di seguito vengono descritti i controlli origine dati e la configurazione da impostare per il supporto dell'ordinamento:
I controlli SqlDataSource e AccessDataSource eseguono l'ordinamento se la proprietà DataSourceMode è impostata su DataSet oppure se la proprietà SortParameterName è impostata su DataSet o DataReader.
Il controllo ObjectDataSource esegue l'ordinamento se la proprietà SortParameterName è impostata su un valore supportato dall'oggetto sottostante.
Processo di ordinamento di GridView
È possibile attivare le modalità predefinite di ordinamento nel controllo GridView impostandone la proprietà AllowSorting su true. Quando questa proprietà è impostata su true, il controllo GridView esegue il rendering di un controllo LinkButton nelle intestazioni delle colonne. Il controllo inoltre imposta in modo implicito la proprietà SortExpression di ciascuna colonna sul nome del campo dati a cui è associato. Se ad esempio nella griglia è presente una colonna che espone la colonna City della tabella Employees presente nel database Northwind di esempio, la proprietà SortExpression della colonna verrà impostata su City.
In fase di esecuzione gli utenti possono fare clic sul controllo LinkButton presente nell'intestazione di una colonna per eseguire l'ordinamento in base alla colonna stessa. A un clic sul collegamento, la pagina eseguirà un postback e genererà l'evento Sorting del controllo GridView. L'espressione di ordinamento, che per impostazione predefinita corrisponde alla colonna dati, viene passata come parte degli argomenti dell'evento. Il comportamento predefinito dell'evento Sorting prevede che il controllo GridView passi l'espressione di ordinamento al controllo origine dati. Quest'ultimo esegue il metodo o la query di selezione, includendo i parametri di ordinamento passati dalla griglia.
Una volta eseguita la query, viene generato l'evento Sorted della griglia, che consente di eseguire operazioni di logica di post-query, ad esempio la visualizzazione di un messaggio di stato. Il controllo origine dati infine associa il controllo GridView ai risultati della query riordinata.
Il controllo GridView non verifica se il controllo origine dati supporta l'ordinamento, ma passa sempre l'espressione di ordinamento all'origine dati. Se il controllo origine dati non supporta la funzionalità di ordinamento e nel controllo GridView viene eseguita un'operazione di ordinamento, il controllo GridView genererà l'eccezione NotSupportedException. È possibile rilevare questa eccezione in un gestore eventi di Sorting, quindi esaminare l'origine dati per determinare se l'ordinamento è supportato oppure avvalersi di una logica di ordinamento personalizzata.
Controllo dell'ordinamento per singole colonne
Specificando la proprietà AllowSorting della griglia, è possibile ordinare le colonne per impostazione predefinita. È possibile disattivare l'ordinamento per singoli campi, ad esempio per il campo BoundField o TemplateField, impostando la proprietà SortExpression della singola colonna su una stringa vuota ("").
Ordinamento personalizzato
Le modalità di ordinamento della griglia possono essere personalizzate. La tecnica di base per un ordinamento personalizzato prevede la gestione dell'evento Sorting. Nel gestore eventi è possibile effettuare le seguenti operazioni:
Personalizzare l'espressione di ordinamento che viene passata al controllo origine dati. Per impostazione predefinita, l'espressione di ordinamento corrisponde al nome di una singola colonna. È possibile modificare l'espressione di ordinamento nel gestore eventi. Se ad esempio si desidera che l'ordinamento venga eseguito in base a due colonne, creare un'espressione di ordinamento in cui siano comprese entrambe le colonne. L'espressione di ordinamento così modificata potrà essere passata al controllo origine dati. Per ulteriori informazioni, vedere la proprietà GridViewSortEventArgs.SortExpression.
Creare una logica di ordinamento personalizzata. Quando ad esempio si utilizza un'origine dati che non supporta l'ordinamento, è possibile eseguire l'ordinamento nel codice, quindi associare la griglia ai dati ordinati.
Vedere anche
Concetti
Cenni preliminari sui controlli server Web ASP.NET con associazione a dati