Cómo: Ordenar y filtrar datos ADO.NET con el componente BindingSource de formularios Windows Forms

Puede exponer la función de ordenación y filtrado del control BindingSource a través de las propiedades Sort y Filter. Puede aplicar la ordenación simple si el origen de datos subyacente es una IBindingList, y puede aplicar la ordenación y el filtrado avanzados si el origen de datos es una IBindingListView. La propiedad Sort requiere una sintaxis de ADO.NET estándar: una cadena representa el nombre de una columna de datos del origen de datos seguida de ASC o de DESC para indicar si la lista debe ordenarse en orden ascendente o descendente. Puede establecer una ordenación avanzada o de múltiples columnas separando cada columna con un separador de coma. La propiedad Filter toma una expresión de cadena.

Nota

El hecho de almacenar información confidencial, como una contraseña, en la cadena de conexión puede afectar a la seguridad de la aplicación. El uso de la autenticación de Windows (también conocida como seguridad integrada) es un modo más seguro de controlar el acceso a una base de datos. Para obtener más información, vea Proteger la información de conexión (ADO.NET).

Para filtrar los datos con BindingSource

  • Establezca la propiedad Filter en la expresión que desee.

    En el ejemplo de código siguiente, la expresión es un nombre de columna seguido del valor que desea para la columna.

BindingSource1.Filter = "ContactTitle='Owner'"
            BindingSource1.Filter = "ContactTitle='Owner'";

Para ordenar los datos con BindingSource

  1. Establezca la propiedad Sort en el nombre de columna que desee seguido de ASC o DESC para indicar el orden ascendente o descendente.

  2. Separe varias columnas con una coma.

BindingSource1.Sort = "Country DESC, Address ASC"
            BindingSource1.Sort = "Country DESC, Address ASC";

Ejemplo

El siguiente ejemplo de código carga los datos de la tabla Customers de la base de datos de ejemplo Northwind dentro de un control DataGridView y filtra y ordena los datos mostrados.

Private Sub InitializeSortedFilteredBindingSource()

    ' Create the connection string, data adapter and data table.
    Dim connectionString As New SqlConnection("Initial Catalog=Northwind;" & _
        "Data Source=localhost;Integrated Security=SSPI;")
    Dim customersTableAdapter As New SqlDataAdapter("Select * from Customers", _
        connectionString)
    Dim customerTable As New DataTable()

    ' Fill the the adapter with the contents of the customer table.
    customersTableAdapter.Fill(customerTable)

    ' Set data source for BindingSource1.
    BindingSource1.DataSource = customerTable

    ' Filter the items to show contacts who are owners.
    BindingSource1.Filter = "ContactTitle='Owner'"
    ' Sort the items on the company name in descending order.
    BindingSource1.Sort = "Country DESC, Address ASC"

    ' Set the data source for dataGridView1 to BindingSource1.
    dataGridView1.DataSource = BindingSource1


End Sub

        private void InitializeSortedFilteredBindingSource()
        {
            // Create the connection string, data adapter and data table.
            SqlConnection connectionString =
                 new SqlConnection("Initial Catalog=Northwind;" +
                 "Data Source=localhost;Integrated Security=SSPI;");
            SqlDataAdapter customersTableAdapter =
                new SqlDataAdapter("Select * from Customers", connectionString);
            DataTable customerTable = new DataTable();

            // Fill the the adapter with the contents of the customer table.
            customersTableAdapter.Fill(customerTable);

            // Set data source for BindingSource1.
            BindingSource1.DataSource = customerTable;

            // Filter the items to show contacts who are owners.
            BindingSource1.Filter = "ContactTitle='Owner'";

            // Sort the items on the company name in descending order.
            BindingSource1.Sort = "Country DESC, Address ASC";

            // Set the data source for dataGridView1 to BindingSource1.
            dataGridView1.DataSource = BindingSource1;

        }

Compilar el código

Para ejecutar este ejemplo, pegue el siguiente código en un formulario que contiene un objeto BindingSource denominado BindingSource1 y un DataGridView denominado dataGridView1. Controle el evento Load del formulario y llame a InitializeSortedFilteredBindingSource en el método de control de eventos de carga.

Vea también

Tareas

Cómo: Instalar bases de datos de ejemplo

Referencia

Sort

Filter

Otros recursos

BindingSource (Componente)