Esta documentación está archivada y no tiene mantenimiento.

DataGridView.Sort (Método) (DataGridViewColumn, ListSortDirection)

Ordena el contenido del control DataGridView en orden ascendente o descendente en función del contenido de la columna especificada.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public virtual void Sort (
	DataGridViewColumn dataGridViewColumn,
	ListSortDirection direction
)
public void Sort (
	DataGridViewColumn dataGridViewColumn, 
	ListSortDirection direction
)
public function Sort (
	dataGridViewColumn : DataGridViewColumn, 
	direction : ListSortDirection
)
No aplicable.

Parámetros

dataGridViewColumn

Columna por la que se ordena el contenido del control DataGridView.

direction

Uno de los valores de ListSortDirection.

Tipo de excepciónCondición

ArgumentException

La columna especificada no forma parte de este DataGridView.

O bien

Se ha establecido la propiedad DataSource y la propiedad IsDataBound de la columna especificada devuelve false.

ArgumentNullException

El valor de dataGridViewColumn es referencia null (Nothing en Visual Basic).

InvalidOperationException

La propiedad VirtualMode se establece en true y la propiedad IsDataBound de la columna especificada devuelve false.

O bien

El objeto especificado por la propiedad DataSource no implementa la interfaz IBindingList.

O bien

El objeto especificado por la propiedad DataSource tiene un valor de la propiedad IBindingList.SupportsSorting de false.

Este método ordena el contenido de DataGridView comparando los valores de la columna especificada. De manera predeterminada, la operación de ordenación utilizará el método Compare para comparar pares de celdas en la columna mediante la propiedad DataGridViewCell.Value.

Para las columnas con la propiedad SortMode establecida en DataGridViewColumnSortMode.Automatic, se establecen automáticamente las propiedades SortedColumn y SortOrder, y se muestra el glifo de ordenación adecuado. Para las columnas con la propiedad SortMode establecida en DataGridViewColumnSortMode.Programmatic, debe mostrar el glifo de la ordenación mediante la propiedad DataGridViewColumnHeaderCell.SortGlyphDirection.

Puede personalizar la operación de ordenación utilizada por este método controlando el evento SortCompare. Este evento sólo se produce si no se ha establecido la propiedad DataSource.

Si se ha establecido la propiedad DataSource, este método sólo funciona para columnas enlazadas a datos. Las columnas enlazadas a datos tienen la propiedad DataGridViewColumn.DataPropertyName establecida. Esto hace que la propiedad DataGridViewColumn.IsDataBound devuelva true.

Si el control DataGridView contiene columnas enlazadas y columnas independientes, debe implementar el modo virtual para mantener los valores de las columnas independientes cuando se ordene el control por una columna enlazada. Para ello, establezca la propiedad VirtualMode en true y controle el evento CellValueNeeded. Si la columna es modificable, también debe controlar el evento CellValuePushed. Para obtener más información sobre el modo virtual, vea Cómo: Implementar el modo virtual en el control DataGridView de formularios Windows Forms. Si el control está enlazado a datos, no se permite ordenar por columnas independientes .

El ejemplo de código siguiente muestra cómo utilizar Sort en una ordenación mediante programación.

private void sortButton_Click(object sender, System.EventArgs e)
{
    // Check which column is selected, otherwise set NewColumn to null.
    DataGridViewColumn newColumn =
        dataGridView1.Columns.GetColumnCount(
        DataGridViewElementStates.Selected) == 1 ?
        dataGridView1.SelectedColumns[0] : null;

    DataGridViewColumn oldColumn = dataGridView1.SortedColumn;
    ListSortDirection direction;

    // If oldColumn is null, then the DataGridView is not currently sorted.
    if (oldColumn != null)
    {
        // Sort the same column again, reversing the SortOrder.
        if (oldColumn == newColumn &&
            dataGridView1.SortOrder == SortOrder.Ascending)
        {
            direction = ListSortDirection.Descending;
        }
        else
        {
            // Sort a new column and remove the old SortGlyph.
            direction = ListSortDirection.Ascending;
            oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
        }
    }
    else
    {
        direction = ListSortDirection.Ascending;
    }

    // If no column has been selected, display an error dialog  box.
    if (newColumn == null)
    {
        MessageBox.Show("Select a single column and try again.",
            "Error: Invalid Selection", MessageBoxButtons.OK,
            MessageBoxIcon.Error);
    }
    else
    {
        dataGridView1.Sort(newColumn, direction);
        newColumn.HeaderCell.SortGlyphDirection =
            direction == ListSortDirection.Ascending ?
            SortOrder.Ascending : SortOrder.Descending;
    }
}

Windows 98, Windows 2000 Service Pack 4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar: