Ordinamento e filtro dei dati (ADO.NET)
In DataView sono disponibili diversi metodi di ordinamento e applicazione di filtri ai dati in una DataTable:
La proprietà Sort viene utilizzata per specificare criteri di ordinamento basati su una o più colonne e includere i parametri ASC (ascendente) e DESC (discendente).
La proprietà ApplyDefaultSort consente di creare automaticamente un criterio di ordinamento ascendente, basato sulla colonna o sulle colonne di chiave primaria della tabella. La proprietà ApplyDefaultSort viene applicata solo se la proprietà Sort è un riferimento null o una stringa vuota e quando nella tabella è stata definita una chiave primaria.
La proprietà RowFilter consente di specificare subset di righe sulla base dei relativi valori di colonna. Per informazioni dettagliate sulle espressioni valide per la proprietà RowFilter, vedere le informazioni di riferimento per la proprietà Expression della classe DataColumn.
Per restituire i risultati di una particolare query sui dati anziché fornire una visualizzazione dinamica di un subset di dati, si consiglia di utilizzare i metodi Find o FindRows di DataView invece di impostare la proprietà RowFilter, se si desidera ottenere prestazioni ottimali. L'impostazione della proprietà RowFilter provoca una ricompilazione dell'indice dei dati, aggiungendo un sovraccarico all'applicazione e riducendo le prestazioni. L'utilizzo della proprietà RowFilter è consigliato in applicazioni con associazioni a dati, in cui i risultati filtrati vengono visualizzati da un controllo associato. I metodi Find e FindRows si avvalgono dell'indice corrente, senza che sia necessario ricompilarlo. Per ulteriori informazioni sui metodi Find e FindRows, vedere Ricerca di righe (ADO.NET).
La proprietà RowStateFilter consente di specificare le versioni di riga da visualizzare. Le versioni di riga da esporre vengono gestite implicitamente dal DataView sulla base del RowState della riga sottostante. Se ad esempio RowStateFilter è impostato su DataViewRowState.Deleted, il DataView esporrà la versione di riga Original di tutte le righe Deleted, poiché non è disponibile alcuna versione di riga Current. La proprietà RowVersion di DataRowView consente di determinare la versione di riga di una riga esposta.
Nella tabella seguente vengono mostrate le opzioni disponibili per DataViewRowState.
Opzioni di DataViewRowState
Descrizione
CurrentRows
La versione di riga Current di tutte le righe Unchanged, Added e Modified. Si tratta dell'impostazione predefinita.
Added
La versione di riga Current di tutte le righe Added.
Deleted
La versione di riga Original di tutte le righe Deleted.
ModifiedCurrent
La versione di riga Current di tutte le righe Modified.
ModifiedOriginal
La versione di riga Original di tutte le righe Modified.
None
Nessuna riga.
OriginalRows
La versione di riga Original di tutte le righe Unchanged, Modified e Deleted.
Unchanged
La versione di riga Current di tutte le righe Unchanged.
Per ulteriori informazioni sugli stati e sulle versioni delle righe, vedere Stati delle righe e versioni delle righe.
Nell'esempio di codice seguente viene creata una visualizzazione in cui vengono mostrati tutti i prodotti il cui numero di unità disponibili in magazzino è inferiore o uguale al livello di riordinamento. I prodotti vengono ordinati prima in base all'identificatore del fornitore, quindi in base al nome del prodotto.
Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
"UnitsInStock <= ReorderLevel", _
"SupplierID, ProductName", _
DataViewRowState.CurrentRows)
DataView prodView = new DataView(prodDS.Tables["Products"],
"UnitsInStock <= ReorderLevel",
"SupplierID, ProductName",
DataViewRowState.CurrentRows);