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
Establezca la propiedad Sort con el nombre de la columna que desee seguido de
ASC
oDESC
para indicar el orden ascendente o descendente.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
.NET Desktop feedback
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de