Procedimiento para ordenar y filtrar datos ADO.NET con el componente BindingSource de formularios Windows Forms

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

Nota:

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 más información, consulte Proteger la información de conexión.

Para filtrar 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 con el nombre de la 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 datos de la tabla Customers de la base de datos de ejemplo de Northwind en un control DataGridView, y filtra y ordena los datos mostrados.

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 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;
}
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 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

Compilar el código

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

Vea también