Condividi tramite


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

Filtraggio dei dati

Allineamento dei dati

Raggruppamento dei dati

Copia, separazione e unione dei dati

Altre risorse

Associazione e modifica dati