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

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

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

  2. Separe varias columnas con una coma.

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

Ejemplo

En el ejemplo de código siguiente se cargan datos de la tabla Customers de la base de datos de ejemplo Northwind en un control y se filtran y ordenan DataGridView 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 con nombre y un denominado BindingSource1 DataGridView dataGridView1 . Controle Load el evento para el formulario y llame a en el método de controlador de eventos de InitializeSortedFilteredBindingSource carga.

Vea también