Compartir a través de


Ordenar y filtrar datos mediante DataView

La DataView ofrece varias posibilidades para ordenar y filtrar datos de una DataTable:

  • Con la propiedad Sort puede especificar criterios simples o múltiples de ordenación de columnas e incluir parámetros ASC (ascendente) y DESC (descendente).

  • Puede utilizar la propiedad ApplyDefaultSort para crear automáticamente un criterio de ordenación, en sentido ascendente, basándose en la columna o las columnas de clave principal de la tabla. ApplyDefaultSort sólo se aplica cuando la propiedad Sort es una referencia nula o una cadena vacía y cuando la tabla tiene definida una clave principal.

  • Con la propiedad RowFilter puede especificar subconjuntos de filas basándose en sus valores de columna. Para obtener detalles acerca de las expresiones válidas para la propiedad RowFilter, vea la información de referencia para la propiedad Expression de la clase DataColumn.

    Si desea devolver los resultados de una consulta determinada en los datos, en lugar de proporcionar una vista dinámica de un subconjunto de los datos, para conseguir el máximo rendimiento utilice los métodos Find o FindRows de la DataView en lugar de establecer la propiedad RowFilter. El establecimiento de la propiedad RowFilter hace que se vuelva a generar el índice de los datos, lo que agrega sobrecarga a la aplicación y reduce el rendimiento. La propiedad RowFilter es más idónea en una aplicación enlazada a datos donde un control enlazado muestra resultados filtrados. Los métodos Find y FindRows aprovechan el índice actual, sin necesidad de volver a generarlo. Para obtener más información acerca de los métodos Find y FindRows, vea Buscar en DataView.

  • Con la propiedad RowStateFilter puede especificar qué versiones de fila desea ver. La DataView administra implícitamente qué versión de fila exponer, dependiendo del RowState de la fila subyacente. Por ejemplo, si el RowStateFilter está establecido como DataViewRowState.Deleted, la DataView expondrá la versión de fila Original de todas las filas Deleted porque no hay ninguna versión de fila Current. Con la propiedad RowVersion de la DataRowView puede determinar qué versión de una fila se está exponiendo.

    En la siguiente tabla se muestran las opciones de DataViewRowState.

    DataViewRowState Descripción
    CurrentRows La versión de fila Current de todas las filas Unchanged, Added y Modified. Éste es el valor predeterminado.
    Added La versión de fila Current de todas las filas Added.
    Deleted La versión de fila Original de todas las filas Deleted.
    ModifiedCurrent La versión de fila Current de todas las filas Modified.
    ModifiedOriginal La versión de fila Original de todas las filas Modified.
    None Ninguna fila.
    OriginalRows La versión de fila Original de todas las filas Unchanged, Modified y Deleted.
    Unchanged La versión de fila Current de todas las filas Unchanged.

Para obtener más información sobre los estados y las versiones de fila, vea Estados de fila y versiones de fila.

En el siguiente ejemplo de código se crea una vista que muestra todos los productos cuyas unidades en existencia son menor o igual que el nivel de nuevo pedido, ordenados en primer lugar por Id. de proveedor y después por nombre de producto.

Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _
                                        "UnitsInStock <= ReorderLevel", _
                                        "SupplierID, ProductName", _
                                        DataViewRowState.CurrentRows)
[C#]
DataView prodView = new DataView(prodDS.Tables["Products"],
                                 "UnitsInStock <= ReorderLevel",
                                 "SupplierID, ProductName",
                                 DataViewRowState.CurrentRows);

Vea también

Crear y utilizar DataViews | DataViewRowState (Enumeración) | DataColumn.Expression (Propiedad) | DataTable (Clase) | DataView (Clase)