Ordinamento dei dati in controlli Chart
L'operazione di ordinamento modifica l'ordine dei punti dati di una serie sulla base di un valore del punto dati. È possibile utilizzare un ordine crescente, decrescente o personalizzato.
Esecuzione di ordinamenti crescenti e decrescenti
Per ordinare i dati, utilizzare il metodo Sort nell'oggetto Series o DataManipulator. È possibile utilizzare un ordine crescente o decrescente.
Nell’esempio di codice riportato di seguito viene illustrato come ordinare i dati di una serie utilizzando il primo valore Y predefinito.
' Sort series in ascending order.
Chart1.Series("MySeries").Sort(PointsSortOrder.Ascending)
' Sort series in descending order.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "MySeries")
// Sort series in ascending order.
Chart1.Series["MySeries"].Sort(PointsSortOrder.Ascending);
// Sort series in descending order.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "MySeries");
Per impostazione predefinita per l'ordinamento viene utilizzato il primo valore Y. Tuttavia, è possibile ordinare i punti dati utilizzando i rispettivi valori X o uno qualsiasi degli altri rispettivi valori Y, ad esempio Y2. È inoltre possibile ordinare in base a ciascuna proprietà AxisLabel del valore.
Nell’esempio di codice riportato di seguito viene illustrato come ordinare i dati di una serie utilizzando valori non predefiniti dei punti.
' Sort series in ascending order by X value.
Chart1.Series("MySeries").Sort(PointsSortOrder.Ascending, "X")
' Sort series in descending order by axis label.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "AxisLabel","MySeries")
// Sort series in ascending order by X value.
Chart1.Series["MySeries"].Sort(PointsSortOrder.Ascending, "X");
// Sort series in descending order by axis label.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "AxisLabel", "MySeries");
Ordinamento di più serie
Per ordinare più serie allineate è possibile utilizzare il metodo DataManipulator.Sort specificando un elenco separato da virgole dei nomi delle serie. Questo metodo ordina tutti i punti in tutte le serie in base ai valori corrispondenti nella prima serie elencata. In altre parole, replica le modifiche apportate all'ordine dei punti dati della prima serie su tutte le serie dell'elenco.
Nota
Se si utilizza il metodo DataManipulator.Sort per ordinare più di una serie, è necessario che i dati di tutte le serie siano allineati.In caso contrario, il metodo genererà un'eccezione.Per ulteriori informazioni sull'allineamento dei dati, vedere Allineamento di dati.
Nell’esempio di codice riportato di seguito viene illustrato come ordinare più serie in ordine decrescente.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice")
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice");
Esecuzione di ordinamenti personalizzati
Per definire un ordinamento personalizzato, utilizzare l'interfaccia IComparer. Il metodo Compare di questa interfaccia riceve due oggetti DataPoint come argomenti. Quindi restituisce un valore minore di zero se il primo oggetto è minore del secondo, zero se gli oggetti sono uguali e un valore maggiore di zero se il primo oggetto è maggiore del secondo.
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare l'interfaccia IComparer per fornire un criterio di ordinamento personalizzato.
' Sort series.
Chart1.DataManipulator.Sort(New CustomComparer(), "MySeries")
' Custom sorting comparing class.
Public Class CustomComparer Implements IComparer
' Compares two data points by their Labels and returns a value indicating
' if the first data point is less than, equal to, or greater than the second
' data point.
Public Function Compare(ByVal a As Object, ByVal b As Object) As Integer Implements IComparer.Compare
Dim pointA As DataPoint = a
Dim pointB As DataPoint = b
' Compares data points' Label property
If pointA.Label < pointB.Label Then
Compare = -1
ElseIf pointA.label > pointB.Label Then
Compare = 1
Else
Compare = 0
End If
End Function
End Class
// Sort series.
Chart1.DataManipulator.Sort(new CustomComparer(), "MySeries");
// Custom sorting comparing class.
public class CustomComparer : IComparer {
// Compares two data points by their Labels and returns a value indicating
// if the first data point is less than, equal to, or greater than the second
// data point.
public int Compare(object a, object b) {
DataPoint pointA = a;
DataPoint pointB = b;
// Compares data points' Label property
if ((pointA.Label < pointB.Label)) {
Compare = -1;
}
else if ((pointA.label > pointB.Label)) {
Compare = 1;
}
else {
Compare = 0;
}
}
}
Vedere anche
Riferimenti
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting
Concetti
Copia, separazione e unione dei dati