如何:使用 Windows 窗体 BindingSource 组件对 ADO.NET 数据进行排序和筛选

您可以通过 SortFilter 属性公开 BindingSource 控件的排序和筛选功能。 当基础数据源为 IBindingList 时可以应用简单排序,当数据源为 IBindingListView 时可以应用筛选和高级排序。 Sort 属性需要标准 ADO.NET 语法:在表示数据源中数据列名的字符串之后加上 ASC 或 DESC,以指示该列表应按升序排序,还是应按降序排序。 通过用逗号分隔符隔开每一列,可以设置高级排序或多列排序。 Filter 属性获取字符串表达式。

提示

将敏感信息(如密码)存储在连接字符串中可能会影响应用程序的安全性。 若要控制对数据库的访问,一种较为安全的方法是使用 Windows 身份验证(也称为集成安全性)。 有关更多信息,请参见保护连接信息 (ADO.NET)

使用 BindingSource 筛选数据

  • Filter 属性设置为所需的表达式。

    在下面的代码示例中,表达式就是在列名之后加上该列所需的值。

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

使用 BindingSource 进行数据排序

  1. Sort 属性设置为后面要跟有 ASC 或 DESC 的所需列名称,以指示是按升序还是降序排序。

  2. 用逗号分隔多个列。

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

示例

下面的代码示例将 Northwind 示例数据库的 Customers 表中的数据加载到 DataGridView 控件中,然后对显示的数据进行筛选和排序。

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;

        }

编译代码

若要运行本示例,请将代码粘贴到一个窗体中,让该窗体包含一个名为 BindingSource1 的 BindingSource 及一个名为 dataGridView1 的 DataGridView。 处理该窗体的 Load 事件,然后调用加载事件处理方法中的 InitializeSortedFilteredBindingSource。

请参见

任务

如何:安装示例数据库

参考

Sort

Filter

其他资源

BindingSource 组件